laravel路由(路由群组)

分类: PHP  • 发布时间: 2015-08-11 23:28:36  • 浏览量:10524

在前面学了laravel的基础路由:laravel路由(基本版),在看文档的时候对他的群组路由看一点就跳过去了,这里回来看一下,不过知道了路由过程之后,对这个群组路由的理解也容易些


路由群组,简单不全面的理解可以是这样的:对于路由,我一条一条路由写行不行,当然行,但是有些路由使用了相同的中间件,有些路由使用了子域名,很多都是重复写,我看着不爽,路由多了,我自己以后管理着也不爽,咋办呢,分组呗,这就是为啥要有路由群组了。

看个场景:

http://unun.in/php , http://unun.in/sql , http://unun.in/linux

我有上面这三个网址需要访问,都要用一个中间件auth,我可以这样写路由

Route::get('php', ['middleware' => 'auth', function(){ echo 'php'; });
Route::get('sql', ['middleware' => 'auth', function(){ echo 'phpstorm'; });
Route::get('linux', ['middleware' => 'auth', function(){ echo 'linux'; });

这样写当然可行,但是'middleware' => 'auth',我写了三次,我很不爽,就三条而已,不爽你忍着,但是我要有300个这样的,你还能忍吗?反正我是不能,怎么办?用路由群组啊,我们可以这么写:

Route::group(['middleware' => 'auth'], function()
{
        Route::get('php', function(){ echo 'php'; });
        Route::get('sql', function(){ echo 'phpstorm'; });
        Route::get('linux', function(){ echo 'linux'; });
});

是不是简洁了很多,好了,这是对路由群组的一个最基本的直观印象。下面我们看看路由群组的其他几个常用使用:


子域名路由

看一个场景:

http://test.unun.in/php , http://test.unun.in/sql , http://test.unun.in/linux 

我们怎么做路由呢,可以这样来:

Route::group(['domain' => 'test.unun.in'], function()
{
    Route::get('php', function(){ echo 'php'; });
    Route::get('sql', function(){ echo 'phpstorm'; });
    Route::get('linux', function(){ echo 'linux'; });
});

是不是很简单,当然了,这还不牛逼,laravel还能使用通配符做子域名路由呢!

Route::group(['domain' => '{account}.unun.in'], function()
{
    Route::get('user/{id}', function($account, $id)
    {
        //您的逻辑代码
    });
});

比如你做个第三方加盟的商城,通过这个通配符子域名路由给每一个商家会员绑定一个自定义二级域名,那也是很快就能实现的。


路由前缀

这个和最开始的那个使用的场景差不多,都是我看着不爽,我要把公共的部分写一下就行了。看一个场景:

http://test.unun.in/tag/php  , http://test.unun.in/tag/phpstorm , http://test.unun.in/tag/linux

我们可以这样做:

Route::group(['prefix' => 'tag'], function() {
    Route::get('php', function() {
        echo 'php';
    });
    Route::get('phpstorm', function() {
        echo 'phpstorm';
    });
    Route::get('linux', function() {
        echo 'linux';
    });
});

这样我们就省去了很多重复的内容,同时也非常方便我们统一管理路由


对于既使用了前缀又是用了相同中间件的(多个路由组类型的),我们直接在前面的数组里加一个就行了,比如这样:

Route::group(['prefix' => 'tag','middleware' => 'auth'], function() {
    Route::get('php', function() {
        echo 'php';
    });
    Route::get('phpstorm', function() {
        echo 'phpstorm';
    });
    Route::get('linux', function() {
        echo 'linux';
    });
});

好了,路由组就说这么多,其他的大家可以去研究官方文档,


我也是新学习laravel,记录的都是我自己的理解,可能有错误,谁发现错误了,给我说一下,我改,别打我就行!

参考文章:当然是laravel官方文档
文章标签: php, 教程, laravel, 路由, 群组, 子域名
用户评论:
  • 游客32729 2016-06-03 10:11:02

    博主的博客程序是emlog吗?

    • 书生 2016-06-25 23:04:59

      不是emlog

  • 游客91554 2016-06-07 03:01:49

    该评论因会给人带来不适,已被屏蔽!