redirect 通常被稱為「轉址」或「重新導向」。
從 controller 方法或 route 定義回傳的資料中,最多的是 view,再來就是 redirect 。
在 Laravel 中,我們通常是用 redirect() 全域輔助函式或是 Redirect 靜態介面來完成這項工作,這兩種方式都會傳回 Illuminate\Http\RedirectResponse 的實例
Table of Contents
RedirectResponse 常用的方法
to()
// 重導至路徑為 users/index 的位址
redirect()->to("users/index");
// 使用全域輔助捷徑,有同樣的效果
redirect("users/index");
// 使用靜態介面, 也有同樣的效果
Redirect::to("users/index");
// 靜態介面捷徑
Redirect("users/index");
method signature
function to($to = null, $status = 302, $header = [], $secure = null)
$to : 有效的內部路徑
$status 是 HTTP 狀態
$header 是需要一併傳送的 HTTP 標頭
$secure : http vs. https 的預設選項
route()
// 重導至路由名稱為 users.index 的位址
redirect()->route("users.index");```
method signature
function route($to = null, $parameters =[], $status = 302, $headers = [])
$to : 特定路由名稱
$parameters : 路由所需的參數
redirect()->route("users.index", ["keyword" => "lee"]);
back()
轉回上次用戶造訪的頁面
with()
在轉址的同時,將資料傳給 session
redirect("users.edit")->with("success", "update success");
配合 blade template 來顯示資訊
layouts/_message.blade.php
@foreach (['danger', 'warning', 'success', 'info'] as $msg)
@if(session()->has($msg))
<div class="flash-message">
<p class="alert alert-{{ $msg }}">
{{ session()->get($msg) }}
</p>
</div>
@endif
@endforeach
withInput()
把表單輸入的資料傳給目標頁面
redirect("users.edit")
->withInput()
->with(["success" => "update success", "id" => 2]);
Comments