Laravel - すべての機能には公衆レイアウトが必要ありません

StackOverflow https://stackoverflow.com//questions/12660201

  •  11-12-2019
  •  | 
  •  

質問

私は最近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は、レスポンスとしてレイアウトを使用すると仮定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top