所有路由和控制器處理完業務邏輯之後都會傳回一個傳送到使用者瀏覽器的回應,laravel提供了多種方式回傳回應。最簡單的是在路由或控制器中傳回一個字串,laravel底層會自動建立一個完整的http回應回傳。
Route::get('index', function () { return 'study laravel' });
如果傳回的是數組,那麼laravel會自動轉換為json格式輸出,另外,以下的程式碼是等價的:
return ['name' => 'laravel', 'email' => 'laravel@qq.com']; return response(['name' => 'laravel', 'email' => 'laravel@qq.com']); return response()->json(['name' => 'laravel', 'email' => 'laravel@qq.com']);
新增回應頭
新增回應頭非常簡單,只需要使用header方法即可,可以在使用多個header方法設定多個回應頭。
return response('study laravel') ->header('Content-Type', 'text/html; charset=UTF-8') ->header('Php-Version', '7.4');
也可以使用withHeaders 來一次設定多個回應頭,方法接受一個陣列做第一個參數。
return response('study laravel') ->withHeaders([ 'Conetnt-Type' => 'text/html; charset=UTF-8', 'Php-Version' => '7.4' ]);
重定向
在laravel中,實作重定向的也有幾種方法。可以透過Route::redirect或函數redirect。因為Route::redirect這個屬於路由相關的知識,這裡,我們來看redirect函數。
return redirect('index/users');
經常的,當一個表單提交時,驗證失敗,我們就會回到先前的表單頁面,這裡,需要使用back函數來完成。
return back();
也可以重定向到命名路由中,如果路由中有參數,那麼透過第二個參數傳遞:
return redirect()->route('news', ['id' => 23]);
經常的,我們在進行一些邏輯處理後,會重定向到另一個控制器接著進行下一步操作。例如,註冊一個東西需要填寫多個表單時。
return redirect()->action('IndexController@index', ['id' => 1]);
有時候你需要重定向到應用程式外的域名,那麼也可以使用away來完成該動作。它是不帶任何編碼的
return redirect()->away('http://google.com');
其它的回應類型
檢視回應是非常常見的,可以使用view方法來設定
return response() ->view('welcome', $data, 200) ->header("Content-Type", "text/html;charset=utf-8");
除此之外,laravel還提供下載的回應、檔案回應等,因為它們在日常工作中使用的不是很多,這裡就不介紹了。有興趣的同學可以自行去查詢相關文件。
推薦教學:《laravel框架》
以上是laravel創建回應、設定回應頭、重定向等的詳細內容。更多資訊請關注PHP中文網其他相關文章!