私のコントローラーには、POST
ルートにリダイレクトするメソッドがあります。このルートをGET
ルートにすることもできません。解決策はありますか?
私のコントローラーコードは次のようになります:
// After a bunch of other if statements, etc
return redirect('newUser')->with('user', $user);
これで、私のルート(web.php内)は次のようになります。
Route::post('/newUser', function() {
$user=session('user');
dd($user);
return view('profileNewUser', $user);
});
私にスローされるエラーはMethodNotAllowedHTTPException
です。
エラーが_token
に関係していることはわかっていますが、とにかくトークンフィールドの受け渡しを許可できますか?リダイレクトでwith
を使用して渡そうとしましたが、それも機能しません。
ご協力いただきありがとうございます。
URLは「newUser」である必要があるため、同じURLのGET
ルートを作成するだけです。
POSTリクエストを同じルートに返したい理由に関する質問は、同じルートの無限の呼び出しにつながる可能性があるため、引き続き有効です。 。
ただし、1つの方法は、ユーザーがすでにセッションに参加しているかどうかを確認するロジックを追加してから、そうでない場合は、この種のパターンはあまり適切ではないということです。
最善の方法は、POSTの応答を返すページを、ビューをレンダリングするページから分離することです。
コメントで提案したように、このgetUser
ルートをコントローラーに移動してから、Laravelのアクションへの応答またはその他の方法を使用できます。 これが答えです 閲覧したい場合に備えて。
PS:私の答えは、あなたの質問に対する私の理解に基づいています。ありがとうございました。
名前付きルートにリダイレクトしてみてください。
Route::post('/newUser', function() {
$user=session('user');
dd($user);
return view('profileNewUser', $user);
})->name('newusr');
次に:
return redirect()->route('newusr', ['user'=>$user]);
または、コントローラーのアクションにリダイレクトします。
私が見る限り、あなたは以下を使用することによってのみポストルートにリダイレクトすることができます:
return back()->withInput(['postvar1' => 'postval1']); // L5.5
これは、フォームリクエストにエラーがある場合に使用されます。