Laravel - すべての機能には公衆レイアウトが必要ありません
質問
私は最近Laravelと働き始めました。これまでの素晴らしいフレームワーク! しかし私は質問があります。
このようなレイアウトテンプレートを使用しています:
public $layout = 'layouts.private';
my base_controllerに設定されています:
public function __construct(){
//Styles
Asset::add('reset', 'css/reset.css');
Asset::add('main', 'css/main.css');
//Scripts
Asset::add('jQuery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js');
//Switch layout template according to the users auth credentials.
if (Auth::check()) {
$this -> layout = 'layouts.private';
} else {
$this -> layout = 'layouts.public';
}
parent::__construct();
}
.
しかし、私のディレクトリコントローラの関数にアクセスしようとしたときにエラー例外を取得します。これは、任意のビューを呼び出すべきではない、すなわち、ユーザーがログインしようとしているときに:
class Login_Controller extends Base_Controller {
public $restful = true;
public function post_index()
{
$user = new User();
$credentials = array('username' => Input::get('email'), 'password' => Input::get('password'));
if (Auth::attempt($credentials))
{
} else {
}
}
.
}
エラーが発生したことは、私のパブリック$レイアウトにさまざまな変数の内容を設定しないことです。しかし、この関数ではビューが必要なので、この関数のレイアウトを含まないようにLaravelに言う方法は?
私の自己が十字架に来た最善の解決策(これが悪い方法であるかどうかわからない)は、関数unset($this -> layout);
... からpost_index()
です。
私の質問を合計する:laravelを特定の関数に含まないように言うことができます。ビューが必要ありませんか?
事前にありがとう、 フィッシャー
解決
ビューをレンダリングしたくない関数に$this->layout = null
を設定する必要があります。
他のヒント
ビューが必要ない場合はリダイレクトされるべきです。あなたのそのログイン方法で他に何が起こっているのですか?
あなたがしているべきことは、GETログインページのログインフォームを表示しています。このページは、検証と認証を行うPOSTログインページに投稿します。認証レベルで何が起こるのかにかかわらず、ユーザーは別のビューが表示される取得要求に戻すべきです。これは、失敗した場合、またはそれらのコントロールパネル/ホームページの場合、これは再びログインフォームになります。
これは、投稿/リダイレクト/ get と呼ばれるWeb開発パターンです。ほとんどの場合に適用されます。あなたがそれを適用する場合は考えることはできません。
あなたのもののこの方法では、ビューは必要ありませんが、まだあなたはそのようにリダイレクトされるべきです。
return Redirect::to('wherever');
.
Return> Return>リダイレクトまたはLaravelは、レスポンスとしてレイアウトを使用すると仮定します。