• Home
  • Laravelのredirectで変数を渡す際ににはまった話

Laravelのredirectで変数を渡す際ににはまった話

記事のサムネイル

Laravel とは

Laravelとはの画像

Laravel とは、2011 年にリリースされた比較的新しい VMC モデルのフレームワークです。比較的新しいながら、PHP におけるフレームワークの中では、代表的なフレームワークとなっています。

はまった原因

更新ページの初期表示時に session で初期値を渡していたことが原因でした…

VScodeの画像

session を使用する際は初期値が必要と思っていたのですが、そうではなかったみたいです。

VScodeの画像

redirect の処理はミスなく記載していたんですけどね…。

Laravel での redirect の基本

以下に Laravel での redirect の基本をまとめておくのでぜひ参考にしてください!

基本

// httpの場合
return redirect('sample/show');                 // http://xxxxx/sample/show
return redirect()->to('sample/index');           // ↑と同義
return redirect('sample/show', 301);            // ステータスコードを指定する場合(※ デフォルトは、302)
return redirect('sample/show', 301, ['test-header' => 'サンプル'] ); // HTTPヘッダー を追加する場合

// httpsの場合
return redirect('sample/show', 302, [], true);  // https://xxxxx/sample/show

// ルート名での指定
return redirect()->route('sample.list');
return redirect()->route('sample.edit', ['sample_id' => 99]);      // sample_id情報を含むルーティングの場合(例: test/{sample_id} )
$sample_id= Auth::user()->sample_id;                               // ↑と同義
return redirect()->route('test.show', ['sample_id' => $sample_id]);


// コントローラ名での指定
return redirect()->action('SampleController@show');
return redirect()->action('SampleController@edit', ['sample_id' => 99]);    // id情報を含む場合

with 関数で変数も一緒に

return redirect('home')->with('result', '完了');
return redirect('home')->with(compact('members'));//compact使用時
return redirect('home')->with([       // 複数データを格納する場合は、配列で!
    'result_1'=>'成功-1', //文字列直接格納
    'result_2'=>$result_2, //変数格納
]);

blade 側では

{{ session('result_1') }}

で取得可能

登録処理や更新処理失敗時(直前のページに戻す)

// データも一緒に、直前ページに戻す場合
public function back() {
    return back()->with('result', 'ok!');
}

// 例
public function back(Request $request) {
    return back()->withInput();
}

withInput 関数を使用すれば前のページから送信されたデータが session 内に格納されます。

ブレードで使用する際は以下のように記載します。

<input name="mail" value="{{ old('mail') }}">

まとめ

いかがでしたでしょうか!

今回のミスのおかげで個人の勉強にもなり、一石二鳥でした笑
解決までにめっちゃ悩んだけど、解決してみたらそーでもない原因だった。なんてことよくあるのは自分だけではないはず…

実装やエラーが解決できない場合

プログラミングの実装やエラーでどうしてもわからない場合はメンターに相談するのが一番です。

考えている、見えている範囲が狭くなり、解決から遠くに行って何時間も、何日も経っていることなんてよくある話です。

そういう時は聞ける先輩や、メンターに相談することが大事です。

僕にも相談可能なので気軽に相談してください。

ご相談はこちら
(Twitterのプロフィールへ飛びます)

OTHER ARTICLES

  • Web制作

  • Rails

railsでjsではなくrubyでtooltipの単位を設定するときの話

2024/08/20
  • Web制作

  • Rails

Railsにおけるクラスメソッドとインスタンスメソッドの違いについて

2024/05/30
  • Web制作

  • Docker

  • Rails

DockerでRails7 + PostgreSQL + esbuildの環境を構築する方法

2024/05/16
  • Web制作

  • Rails

  • Docker

Dockerで建てたrails7環境で「undefined method `devise' for 〜」が発生した話

2024/05/16
  • Web制作

  • Rails

Ruby on RailsのルーティングとRESTfulルート

2024/05/09
  • Web制作

  • Rails

Ruby on Railsにおけるresourceとresourcesの違い

2024/05/01