Laravel redirect()->route 傳值(set value)的幾種方法

常用的 redirect()->route

//demo, route不帶任何value
return redirect()->route("topic.list");

//demo, 某些頁面一定要帶上$id
return redirect()->route("topic.edit", $id);

//demo, 帶上flash message
return redirect()->route("topic.edit", $id)->with('success', 'Updated successfully.');

傳的值跟 route沒有關系怎辦?

方法一:GET - 嘗試用get在網址中直接設定

但帶上value 轉頁時,如果那個value 不是 $id, 即是想傳的值跟 route 沒有關系要怎麼辦?你可以考慮轉用這個方式 redirect(route())."?key=vaule"

//demo
$valueB = 'Hello GET value';
return redirect(route("topic.edit", $id) . "?other_value=$valueB")->with('success', 'Updated successfully.');

回到 blade 可這樣判斷是否有其他值,, 你應該會見到 Hello GET value

@if(request()->other_value)
    <h2>{{ request()->other_value }}</h2>
@enfif

方法二: with() - Flash message呢?

上面不是一直在用 with 來傳alter message嗎?

->with('success', 'Updated successfully.');

那麼我們可以改成

$valueB = 'Hello Session value';
return redirect()->route("topic.edit", $id)->with('success', 'Updated successfully.')->with('other_value', $valueB);

回到 blade 可這樣判斷, 你應該會見到 Hello Session value

@if(Session::has('other_value'))
{{ Session::get('other_value') }}
@endif

如果有了解到,其實這樣傳比GET的差別,因為真的只會只傳送1次 你再刷新就沒有了