2017-09-14 18 views
1

リダイレクトを使用するか、コンストラクタコード内でリターンすることはできますか?私たちが何かを返すか、コンストラクタ内でリダイレクトを使うとエラーは発生しませんが、それは正しいアプローチだとは思いません。 私はlaravel MVCコンストラクタ内部のリダイレクト/リターン

public function __construct() { $this->middleware('auth'); }

の話なら例えば、ここに私はこれが好きです私は認証ミドルウェアを初期化してきたが、それは右のようになります。

public function __construct() { 
    $this->middleware('auth'); 
    if (!Auth::check()) { 
     Redirect::to('admin')->send(); 
    } 
} 

か、私は次の文を使用することができます代わりにRedirect::to('admin')->send();

return redirect('admin'); 

または

abort('404'); 

か、そのようなコードをコンストラクタ内に配置するのは悪い習慣ですか?どんな助けもありがとう。おかげさまで

答えて

1

これは悪い習慣です。コントローラーが初期化される(許可の前に)実行するものについては、ミドルウェアを使用します。

管理者チェックのような操作をしたい場合は、独自のミドルウェアを作成することができます。詳細については、以下を確認しlink

+0

わかりましたので、私はこのように使用する場合: 'パブリック関数の__constructを(){ ます$ this-> adminAuthorization(); } ' ' public function adminAuthorization(){ if(!Auth :: check()){ Redirect :: to( 'admin') - > send(); } } ' これは機能しますか? @markwalet – Manu

+0

これはまったく同じです。コンストラクタから同じコードを実行します。ミドルウェアの使用をお勧めします。しかし、codestyleは常に議論の余地があります。 –

関連する問題