首頁  >  文章  >  php框架  >  laravel第四講:路由命名及路由分組

laravel第四講:路由命名及路由分組

齐天大圣
齐天大圣原創
2020-12-09 20:28:352459瀏覽

路由命名

路由命名是為了程式能夠方便的獲取到路由信息,拿到該信息,可以進行重定向或作其他操作。路由命令透過name方法來實現。下面,我們來給一個路由命名:

Route::get('about', function () {})->name('index.about');

當給一個路由命名後,就可以透過助手函數route來取得該路由的url。

$url = route('index.about');
echo $url;  // http://localhost:8000/about

如果我們不要前面的網域部分,只想拿後面的路徑,那麼可以這樣

$url = route('index.about', [], false);
echo $url;  // /about

如果定義的是有參數的路由,那麼可以把參數當作route函數的第二個參數傳入

Route::get('news/{id}', 'IndexController@news')->name('home.news');

...
return redirect()->route('home.news', ['id' => 23]);

route函數中第二個參數數組元素可以自動和路由參數對應,若route函數中第二個參數數組元素比路由設定的參數多的話,則會自動拼接產生URL

echo route('home.news', ['id' => 23, 'page' => 3, 'page_num' => 20]);
// http://localhost:8000/news/23?page=3&page_num=20

路由分組

#路由分組的作用是,當系統設定了許多路由,但發現有些路由有一些共同的點,例如有相同的命名空間前綴,或有相同的路徑前綴,那麼就可以把有共同點的那些路由放在一個路由中,方便了管理也減少了代碼量,並且代碼看上去也更加的優雅。

路由前綴

我們把相同前綴的路由放在一個分組裡。下面是兩個有相同前綴的路由:

Route::prefix('index')->get('a', function () {
    return 'a'; // 匹配/index/a
});

Route::prefix('index')->get('b', function () {
    return 'b'; // 匹配/index/b
});

現在,我們將他們放到一個分組中

Route::prefix('index')->group(function ()
{
    Route::get('a', function () {
        return 'a'; // 匹配/index/a
    });
    Route::get('b', function () {
        return 'b'; // 匹配/index/b
    });
});

除了使用prefix方法外,還可以在group方法的第一個參數中設定,如下:

Route::group(['prefix' => 'index'], function ()
{
    Route::get('a', function () {
        return 'a'; // 匹配/index/a
    });
    Route::get('b', function () {
        return 'b'; // 匹配/index/b
    });
});

命名空間

#命名空間也是常用到的路由分組。

Route::group(['namespace' => 'Home'], function ()
{
    Route::get('home/index', 'IndexController@index');
});

如果上述程式碼沒有設定命名空間,則上面的路由則為

Route::get('home/index', 'Home\IndexController@index');

子網域

用來設定透過哪個網域可以訪問,不是這個網域即使路徑正確也不可以訪問。

Route::domain('php.cn')->group(...)

名稱前綴

name方法可以為每個路由分組中路由新增一個給定前綴

Route::name('abc.')->group( function ()
{
    Route::get('home', function () {

    })->name('home');
});

……
$url = route('abc.home');

以上是laravel第四講:路由命名及路由分組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn