Laravel 路由總結

自由飛發表於2018-05-06

路由是進入專案程式碼中的一個入口(另一個是控制檯),看官方文章有很多介紹,其實實際專案中需要你把這些總結一下然後再拿來用,這邊文章主要介紹路由實戰,喜歡的或者有幫助的別忘了打賞,當然更重要的是為開源專案做貢獻,哈哈廢話不多說。

Route::group(['namespace' => 'FrontEnd', 'prefix' => 'web', 'middleware' => ['auth_user']], function () {
   Route::post('/index/{id?},'indexController@index')->name('web.index');
     });

然後我們詳細的講述下,group()裡面為陣列 ,namespace代表該路由分組下面所有控制器的名稱空間,prefix為url字首比如:http://www.onefly.shop/web/index , middleware為中介軟體(可用來控制會員是否登入,未登入直接跳轉登入頁)。
{id?}為get傳值引數 應該拼接url路徑為 http://www.onefly.shop/web/index/1 ,(id換為1),此時控制器

public function index($id){ return $id};  

->name()為路由別名,你可以在檢視直接 {{route('web.index',['id'=>1]}} 來訪問路由,一般建議起別名。至此路由基本用法已經介紹完了,接下來梳理下官方文件其他很少用的方法
路由重定向: Route::redirect('/here', '/there', 301);
檢視路由: Route::view('/welcome', 'welcome', ['name' => 'Taylor']); 第三個引數給檢視傳值 可選;
方法中跳轉路由: return redirect()->route('profile');
方法中獲取路由資訊:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();

路由配置子域名:
如果一個專案中你想前臺和後臺以及其它臺配置不同的域名
首先在 .env檔案中配置

    WEB_DOMAIN= 'web.test.com'
    ADMAIN_DOMAIN='admin.test.com'

在RouteServiceProvider.php 路由服務提供者

 protected function mapWebRoutes()
 {
    Route::domain(env('WEB_DOMAIN'))      //這是要新增的domain方法
        ->middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
 }

      protected function mapAdminRoutes()
 {
    Route::domain(env('ADMIN_DOMAIN'))   //這是要新增的domain方法
        ->middleware('admin')
        ->namespace($this->namespace)
        ->group(base_path('routes/admin.php'));
 }

這樣在apache或者nginx中配置前臺和後臺的域名指定到public目錄,只要訪問不同域名就可以訪問不同的路由檔案;
如果想自己生成的路由檔案配置域名,只需要在RouteServiceProvider.php中map()函式中新增,其他複製上面即可。

至此路由能所能用到這就這些了,如果看管有更好的歡迎留言我會及時補充。
如果這篇文章給與你很大的幫助請點個贊或者隨意打賞,讓我感覺你的存在,哈哈!
原創,如果轉載請標明出處,否則承擔相應的責任;

本作品採用《CC 協議》,轉載必須註明作者和本文連結

自由飛

相關文章