Laravel5.1 路由 -路由分組


路由分組有啥好處?

有時候啊 一大堆路由它們都有共同的地方,比如都使用一個中間件(過兩天寫)或是前綴都一樣,避免代碼重復 我們可以將他們分到一組中。

 


 1 路由分組可以共享哪些屬性?

  • 中間件 middleware。
  • 控制器的命名空間 namespace。
  • 子域名 domain
  • 路由前綴

 1.1 中間件

關於中間件大K還沒有寫筆記介紹,這里先簡單說下 中間件就是接收到請求后驗證一些東西或相應后驗證一些東西,比如Laravel自帶的Auth中間件 就是驗證用戶有沒有登錄進來,如果用戶沒用登錄,那么就會自動跳轉到登錄頁面,我們完全不用實現這一方面的邏輯。

好啦 回歸正題,咱一塊兒看看路由分組咋寫:

/**
 * 這就是一個路由分組 /user和/user/profile都將使用auth中間件。
 */
Route::group(['middleware' => 'auth'], function (){
    Route::get('/user', function (){

    });

    Route::get('/user/profile', function (){
        
    });
});

 1.2 路由前綴

/**
 * 路由前綴呢 就是講此分組中的所有路由路徑前加個前綴
 */
Route::group(['prefix' => 'admin'], function (){
    /**
     * 路由分組是可以嵌套的哦
     */
    Route::group(['middleware' => 'auth'], function (){
        /**
         * 這條路由不僅使用auth中間件,而且還加了admin前綴,我們通過/admin/user才能訪問
         */
        Route::get('/user', function (){

        });

        Route::get('/user/profile', function (){

        });
    });
    /**
     * 訪問路徑是:/admin
     */
    Route::get('/', function (){
        
    });;
});

1.3 子域名

/**
 * 比如我們可以輸入larger來訪問路由,在子路由中可以通過參數來把larger取到。
 */
Route::group(['domain' => '{account}.myapp.com'], function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});

注意:如果想測試子域名你需要使用homestand來設置你的域名。

1.4 命名空間

這又是一個沒寫的點 這里包含控制器的內容,先看例子吧 明天就學控制器了 倒時候做筆記。

/**
 * 只要指明了命名空間,那么在子路由中所使用的所有控制器都位於App\Http\Controller\Admin這個命名空間下。
 */
Route::group(['namespace' => 'Admin', 'prefix' => 'admin'], function(){
    /**
     * 其實HomeController在App\Http\Controller\Admin這個命名空間下。
     */
    Route::get('/', 'HomeController@index');
});

1.5 分組命名

補充一點,前一篇的基礎文章我們學了給路由命名,那么分組可不可以命名呢,Yo Man。。當然可以:

/**
 * 跟普通路由一樣 也是用as來命名但是首字母最好大寫后面跟倆冒號 代表它是一個分組 如果這樣寫 我們就可以通過 route('Admin::index')方式來找到它了
 */
Route::group(['namespace' => 'Admin', 'prefix' => 'admin', 'as' => 'Admin::'], function(){
    Route::get('/', ['as' => 'index','uses' => 'HomeController@index']);
});

今兒又有點兒晚了- -,大K先睡了,歡迎大神來侮辱 我願隨心情改正,大家一起進步~。


免責聲明!

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



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