Laravel 路由
Laravel 路由
基本路由
首先看到 rotues 資料夾裡的 web.php,會看到這些程式碼
Route::get('/', function () { // 使用get方法請求 |
view 的位置就放在resources\views\welcome.blade.php
接下來說說來說說基本路由
Laravel 的路由只接受一個 URI 和一個 Closure(閉包)
Route::get('foo', function () { |
laravel 可以使用所有 HTTP 的方法
Route::get($uri, $callback); |
可能你這個路由可以響應多個 HTTP 的請求,可以使用 match,或者任何請求都可以就使用 any
Route::match(['get', 'post'], '/', function () { |
如果有將路由指向任何 HTML 表單 POST,PUT 或 DELETE 放在web.php
中,應當包括 CSRF 令牌字段。否則,請求將被拒絕。
<form method="POST" action="/profile">{{ csrf_field() }} ...</form> |
路由參數
所需參數
有時需要捕捉路由中的 URI 字段,可以通過以下方式實現
Route::get('user/{id}', function ($id) { |
如下圖所示:
可以根據自己的想法來定義更多的路線參數
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) { |
可選參數
有時可能需要指定一個路由參數,但將該路由參數的存在設為可選。您可以通過?在參數名稱後放置一個標記來實現。確保給路由對應的變量一個默認值:
Route::get('user/{name?}', function ($name = null) { |
正規表達法約束
您可以使用 where 路由實例上的方法來限制路由參數的格式。該 where 方法接受參數的名稱和定義參數應如何約束的正則表達式:
Route::get('user/{name}', function ($name) { |
全局約束
如果您希望路由參數始終受給定正則表達式的約束,則可以使用該 pattern 方法。您應該在boot
您的方法中定義這些模式RouteServiceProvider
:
/** |
一旦定義了模式,它就會自動應用於使用該參數名稱的所有路由:
Route::get('user/{id}', function ($id) { |
命名路由
命名路由允許為特定路由方便地生成 URL 或重定向。您可以通過將 name 方法鏈接到路由定義來為路由指定名稱:
Route::get('user/profile', function () { |
您還可以為控制器操作指定路由名稱:
Route::get('user/profile', 'UserController@showProfile')->name('profile'); |
生成命名路由的 URL
為給定路由指定名稱後,您可以在通過全局 route 函數生成 URL 或重定向時使用該路由的名稱:
// Generating URLs... |
如果命名路由定義了參數,您可以將參數作為第二個參數傳遞給 route 函數。給定的參數將自動插入到 URL 的正確位置:
Route::get('user/{id}/profile', function ($id) { |