Laravel5.1 路由(二)


昨天寫了一篇Laravel的路由筆記,Laravel的路由還有很多功能,我今天繼續學一些路由的知識

重定向

我們可以使用redirect方法來實現重定向,我們來看一個簡單的重定向:

Route::get('/user/{id}', function ($id){
    if ($id <= 0){
        return redirect('/');
    } else {
        return 'hello';
    }
});

當滿足一些邏輯后,使用redirect跳轉到別的視圖。

 

路由命名

路由命名就是為路由起一個名字,這樣我們在重定向時 可是使用路由的名字,就不用輸入那些復雜的路徑了。使用 as 關鍵字來為路由命名:

// 把第二個參數改成一個數組,里面指定一些鍵值配置,和一個閉包。
Route::get('/hello/laravel',['as' => 'laravel',function(){
    return 'Hello Laravel';
}]);

// 生成一個測試重定向的路由
Route::get('/test/redirect',function (){
    // 我們在跳轉時,只需要在route方法中傳入路由名就可以實現跳轉。
    return redirect()->route('laravel');
});

在實際開發中 我們或許會在重定向時為路由傳入參數,可以這么寫:

 

路由分組

路由分組給我們帶來了很多便利,當一些路由具有相同的屬性時,我們可以使用路由分組將他們包含起來,路由的屬性有:

  • 中間件
  • 路由前綴
  • 子域名
  • 命名空間

其中中間件和命名空間在之后的章節中做記錄,我們先來看看路由前綴和子域名的使用。

子域名

子域名我們可以使用domain來聲明:

// 定義一個路由分組,domain傳進一個參數:
Route::group(['domain'=>'{service}.laravel.app'], function (){
    Route::get('/write/laravel', function ($service){
        return "Write FROM {$service}.laravel.app";
    });
    Route::get('/update/laravel', function ($service){
        return "Update FROM {$service}.laravel.app";
    });
});

當我們在瀏覽器中訪問:http://write.laravel.app:8000/write/laravel 時,則會輸出:

Write FROM write.laravel.app

當我們訪問:http://update.laravel.app:8000/update/laravel 時,輸出:

Update FROM update.laravel.app

注意:我們要讓子域名生效 需要在hosts文件中綁定IP地址。

 

路由前綴

我們使用prefix來指定路由前綴:

Route::group(['prefix' => 'laravel'], function (){
    Route::get('/write', function (){
        return 'Write laravel';
    });
    Route::get('/update', function (){
        return 'Update laravel';
    });
});

這樣的話我們只需要訪問:localhost:8000/laravel/write 和 localhost:8000/laravel/update 即可。

 

有些時候 我們還可以指定帶參數的prefix:

Route::group(['prefix' => 'laravel/{version}'], function (){
    Route::get('/write', function ($version){
        return 'Write laravel' . $version;
    });
    Route::get('/update', function ($version){
        return 'Update laravel' . $version;
    });
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM