写给thinkphp开发者的laravel系列教程(四)路由

文章开始前先说个前提;
这个系列的文章我都会把控制器按模块划分了;
示例都是在模块的基础上讲解的;
关于模块先参考上篇文章;
写给 thinkphp 开发者的 laravel 系列教程 (三) 目录结构

正文开始;
如果我们想访问 Admin 模块下的 IndexController 控制器的 index 方法;
在 thinkphp 中是不需要手动定义的;
这根本不算是一个问题;
直接访问 https://baijunyao.com/Admin/Index/index 即可;
而 laravel 则需要在routes/web.php 文件中定义如下:

Route::get('admin/index/index', 'Admin\IndexController@index');

每写一个方法就要定义一条路由;
从 thinkphp 转到 laravel 的筒子们;
路由是一个必定产生疑惑的地方;
laravel 整天标榜这自己优雅;
这 thinkphp 中都自动完成的东西;
laravel 还需要手动写一大串;
这到底哪优雅了;

我是一个懒人;
当我知道了我要写那么多路由;
我是拒绝的;
于是我一度在研究如何让 laravel 也像 thinkphp 那么实现自动路由;
终于皇天不负苦心人;
我搞定了这件事;
如果你也是和我一样的懒人;
那么恭喜你;
等我下面给出解决的方案吗?
NO;NO;NO;
我并不打算教你;
因为我在使用 laravel 的过程中;
不断的感受到了 laravel 对于解耦的执着;
当我重构几次项目后;
就理解到了这种自定义路由的灵活;
把上面这堆水拧干了;
核心就是想说服已经习惯 thinkphp 路由的童鞋们接受并使用路由;

但是如果都像上面那样一条一条定义路由;

Route::get('admin/article/index', 'Admin\ArticleController@index');
Route::get('admin/article/create', 'Admin\ArticleController@create');
Route::post('admin/article/store', 'Admin\ArticleController@store');

想想也是挺心累的;
那我这里利用 group prefix 让路由更简洁和更有层级感了;
可以实现像 thinkphp 那样的 模块/控制器/方法三级;
给出一个示例;

// Admin 模块
Route::group(['namespace' => 'Admin', 'prefix' => 'admin', 'middleware' => 'admin.auth'], function () {
    // 文章管理
    Route::group(['prefix' => 'article'], function () {
        // 文章列表
        Route::get('index', 'ArticleController@index');
        // 发布文章
        Route::get('create', 'ArticleController@create');
        // ...
    });

    // 分类管理
    Route::group(['prefix' => 'category'], function () {
        // 分类列表
        Route::get('index', 'CategoryController@index');
        // 添加分类
        Route::get('create', 'CategoryController@create');
    });
});

上面代码中的 namespace 就是相对于 app/Http/Controllers 的命名空间;
路径为 app/Http/Controllers/Admin 的admin模块的 namespace 就是Admin了;
prefix 就是定义 url 中模块和控制器的名字了;
middleware 是中间件;
这里不多说;后续文章将持续讲解;
所以上面示例中定义的 url 分别是;

admin/article/index
admin/article/create
admin/category/index
admin/category/create

还是原来的配方;熟悉的味道;
这样是不是既符合已有的 thinkphp 习惯;
又不违反 laravel 的规则;

在url中相比 thinkphp laravel还多出了个路由参数的概念;
但是因为要在控制器中获取值;
所以我放在了下一篇文章讲解控制器的时候一起讲了;
laravel thinkphp route

白俊遥博客
请先登录后发表评论
  • latest comments
  • 总共28条评论
白俊遥博客

Time :想请教一下用的什么编辑器,我看代码的空格等格式和laravel的一样

2018-11-09 15:44:08 回复

白俊遥博客

这般 :写的不错,但是我按照你的方式访问控制器没成功。。。

2018-10-21 16:12:57 回复

白俊遥博客

=͟͟͞͞若=͟͟͞͞水 :您写的laravel开源博客有点复杂, 还引用了自己composer包, 文档只是写了基础的部署教程. 看完你写的laravel教程入门不错, 但是看你的开源博客代码还是很吃力的.

2018-09-04 11:23:23 回复

白俊遥博客 白俊遥博客

云淡风晴 :博客项目还不算复杂;不过确实有不少知识点是不在我这个教程范围内的;等我后续教程都写完后;再看博客代码就简单了;

2018-10-20 22:12:16 回复

白俊遥博客

=͟͟͞͞若=͟͟͞͞水 :上一篇和下一篇写反了吧?

2018-08-23 19:24:18 回复

白俊遥博客 白俊遥博客

云淡风晴 :多谢反馈;

2018-09-02 22:45:15 回复

白俊遥博客

花舞千魂殇 :还是原来的配方;熟悉的味道; ha好风趣的赶脚

2018-07-25 14:14:21 回复

白俊遥博客

白俊遥博客

2017-10-27 17:30:41 回复

白俊遥博客

晨曦 :不错,值得收藏

2017-10-12 15:43:18 回复

白俊遥博客

Wake1 :我是一个懒人;当我知道了我要写那么多路由;我是拒绝的;

2017-09-07 17:27:19 回复

白俊遥博客

沉默纪年灬 白俊遥博客教程很好,有老大在入门快多了

2017-08-14 17:31:52 回复

白俊遥博客

THIRD_KING 白俊遥博客http://menvscode.com/,博主,换友链不?

2017-08-04 15:02:10 回复

白俊遥博客

吴伟祥 白俊遥博客http://sucaime.com    用你的博客系统做的!真的很好的一套开源系统!

2017-08-04 11:33:27 回复

白俊遥博客

PHP部门 :加油更啊!!!!

2017-08-02 13:45:34 回复

白俊遥博客

弱水三千 :你不是说用了百度云加速吗?怎么不用了?

2017-08-01 01:59:04 回复

白俊遥博客

李景lizole :能详细讲下 中间件吗?

2017-07-31 10:18:14 回复

白俊遥博客

张学军 :你好,经常光临你的博客,感觉你的博客蓬荜生辉,所以希望与你的网站友情链接,本站http://www.yuedudg.cn/本站360收录6000如果您同意的话,请到本站留言,本站将在第一时间上链

2017-07-30 18:55:25 回复

白俊遥博客

bref :老哥,换个友链吧www.lukedever.cn,我把你的加上了

2017-07-27 08:37:57 回复

白俊遥博客

NULL 白俊遥博客后来发现 把路由文件分成几个小文件  然后以require的方式引入 对路由来说也是很清晰并且适合多人协作开发的。最起码能避开svn冲突问题

2017-07-25 09:22:16 回复

白俊遥博客 白俊遥博客

云淡风晴 :这还真是一个机智的解决方案;

2017-08-03 23:57:46 回复

白俊遥博客

楓楪夢殇 白俊遥博客

2018-01-25 16:31:36 回复

白俊遥博客

:我想问一下网址输入/Admin这一个路由应该怎么写?

2017-07-24 20:23:34 回复

白俊遥博客 白俊遥博客

云淡风晴 :Route::get('Admin', '控制器@方法');

2017-07-24 22:11:42 回复

白俊遥博客

://后台Route::group(['namespace' => 'Admin', 'prefix' => 'Admin'], function () {    Route::get('/', 'Admin\LoginController@index');//这个访问为啥是403// 登陆    Route::group(['prefix' => 'Login'], function () {        // 页面        Route::get('/', 'LoginController@index');        Route::get('index', 'LoginController@index');});});

2017-07-24 22:49:47 回复

白俊遥博客

幸福的小海豚 白俊遥博客

2017-07-31 11:43:42 回复

白俊遥博客

楓楪夢殇 白俊遥博客

2018-01-25 16:32:37 回复

白俊遥博客

爱便流通于世 :白哥!讲的太到位了!嘿嘿!继续更!加油!

2017-07-24 11:28:33 回复

白俊遥博客 白俊遥博客

云淡风晴 :.

2017-07-24 22:12:24 回复