• 技术文章 >php框架 >Laravel

    laravel第四讲:路由命名及路由分组

    齐天大圣齐天大圣2020-12-10 09:10:47原创1810

    路由命名

    路由命名是为了程序能够方便的获取到路由信息,拿到该信息,可以进行重定向或作其他操作。路由命令通过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核实处理。
    专题推荐:laravel
    上一篇:laravel第三讲:路由参数全局约束、路由重定向及路由视图绑定 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 介绍一个laravel+H-ui基础后台管理系统• laravel第一讲:安装及运行laravel• laravel第二讲:路由的定义及与控制器绑定• laravel第三讲:路由参数全局约束、路由重定向及路由视图绑定
    1/1

    PHP中文网