4.
了解路由 Router 及視圖 View
當使用者在瀏覽器輸入網址,或者透過連結執行網站某個操作,該如何讓Laravel從這些「網址」判斷出,接下來該執行什麼動作,這樣的機制,就是Route(路由)。
一、路由(Route)
- 路由,就是讓Laravel根據使用者從瀏覽器輸入的網址來判斷接下來該做什麼事。
- 網頁的路由放在
/專案/routes/web.php
,請開啟之。
- 其中最下面兩行是我們執行上一單元加入內建的使用者認證機制時,自動產生的路由,暫時無須去理會它。
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
- 我們用
Route::get('網址', 動作);
來取得符合條件的網址,並告知系統要做啥事。
- 路由都是由上往下,一旦動詞符合且路徑符合就執行指定的動作。
get
是動詞(亦即HTTP的傳輸方式),其他動詞才還有post
、patch
、delete
等,詳情可參考 開始定義系統各項功能 。
- 當接收到的網址是用get傳過來的,且在
/
目錄時,會傳回名字叫做welcome
的視圖(View),該視圖會去讀取名為 welcome.blade.php
的樣板,簡寫為view('welcome')
。
二、視圖(View)
- 視圖,用來呈現畫面用,其實就是一個HTML網頁,只是裡面有包含一些樣板語法。
- View 一律放在「
專案/resources/views/
」底下,檔名一律為「xxx.blade.php」。
- welcome 的樣板位置在
/專案/resources/views/welcome.blade.php
,高興的話,可以隨意改一下內容,例如我們來隨意新增兩個變數(等等可以讓路由帶參數過來套用):
<div class="title m-b-md">
{{$name}} {{$say}} Laravel
</div>
三、帶參數給視圖
- 如果路由需要帶參數給視圖,可以用
->with()
,如:
Route::get('/', function () {
return view('welcome')->with('name','tad')->with('say','嗨!');
});
- 亦可用陣列:
Route::get('/', function () {
$data = ['name' => 'tad', 'say' => '嗨!'];
return view('welcome', $data);
});
當然也可以簡寫為
Route::get('/', function () {
return view('welcome', ['name' => 'tad', 'say' => '嗨!']);
});
- 也可以用 PHP 的
compact()
函數
Route::get('/', function () {
$name = 'tad';
$say = '嗨!';
return view('welcome', compact('name', 'say'));
});
-
看起來像這樣