iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 11
1
自我挑戰組

Laravel 學習歷程系列 第 11

Day11 【Laravel 學習歷程】- 路由Routes(2)

昨天的路由Day10 【Laravel 學習歷程】- Routes(1)還沒結束,今日繼續

路由參數

來說說路由參數這個東西
當我們要傳遞參數的時候,該怎麼用呢?

  • 單純帶參數
Route::get('abc/{id}', function ($id) {
    ...
});
  • 傳遞參數如何加上預設值
Route::get('abc/{id}', function ($id='123') {
    ...
});

除此之外除此之外
還可以透過正規式來限制參數裡頭的函數只能接收相對應的值

  • 限制參數$id只能輸入數字
Route::get('abc/{id}', function ($id) {
    ...
})->where('id', '[0-9]+');
  • 限制參數$txt只能輸入大、小寫的英文字母
Route::get('abc/{txt}', function ($txt) {
    ...
})->where('txt', '[A-Za-z]+');
  • 同時帶兩個參數的時候,怎麼限制不同規則呢?
    例如:
    要輸入phone跟email,我們限制其中phone只能輸入數字;
    email只能輸入大、小寫的英文字母;
    Route::get('posts/{phone}/{email}', function ($phone, $email) {
        ...
    })->where(['phone' => '[0-9]+', 'email' => '[A-Za-z]+']);
    

命名路由

還有那個命名路由的用途是讓我們可以為特定路由產生URLs或進行重新導向
定義路由的時候要使用陣列的as鍵來為路由指定名稱:
像是例如把home指定為index

Route::get('home', ['as' => 'index', function () {
    ...
}]);

齁!還可以指定路由名稱到Controller操作

Route::get('home', [
    'as' => 'index', 'show' => 'UserController@myController'
]);

POST請求路由

再來一個POST請求路由吧!
哈哈很看心情選路由說,因為我也是學到哪講到哪
很凌亂的在學習,來個範例吧

Route::get('/testPost',function(){
    $csrf_token = csrf_token();
    $form = <<<FORM
        <form action="/home" method="POST">
            <input type="hidden" name="_token" value="{$csrf_token}">
            <input type="submit" value="Submit"/>
        </form>
FORM;
    return $form;
});

Route::post('/home',function(){
    return "Hello World[POST]!";
});

還有很多,
註冊一個可回應多個 HTTP 請求路由的match方法
或者是想註冊一個可以回應所有 HTTP 請求路由的any方法

或者是路由群組、子網域路由等等什麼的,這個我可能就...
要等到用的到的時候才會研究了啦哈哈


上一篇
Day10 【Laravel 學習歷程】- 路由Routes(1)
下一篇
Day12 【Laravel 學習歷程】- 建立Controller控制器
系列文
Laravel 學習歷程17

尚未有邦友留言

立即登入留言