Laravel 学习笔记之 路由和路由组

学习Laravel快一年,从对这个框架陌生到慢慢熟悉经历了一个过程,laravel是一个非常全面的框架,包含了Vue.js,PHPUnit,SASS,Redis,广播等很多组件,借鉴了Spring的IOC服务容器,使用绑定实现模块化解耦。

相对于轻量级的ThinkPHP,开始上手Laravel很不习惯,尤其是手册写的晦涩难懂,经过漫长的学习过程,看了很多视频教程,通过自己一步步练习才理解,我在这里分享下自己的经验。

路由

简单理解就是当用户输入一个 Http地址,如何找到对应的控制器和传递参数,ThinkPHP一般不用考虑,因为按照 模块名/控制器名/方法名 自动解析URL,所以一开始我也不理解为什么要画蛇添足, 这样每个外部访问的方法都需要麻烦添加路由,其实因为Laravel的入口是按 REST原则 工作的。

路由文件的位置,5.4以下版本在 app\Http\routes.php,新版本在根目录 routes 文件夹。

Laravel手册这么定义一个最简单的路由。

Route::get('/', function () {
    return view('welcome');
});

看到这里不要懵逼,这种写法是一个闭包,好处是把回调的实现和使用场所隔离,这段代码是意思是,当get方式访问根目录时返回welcome视图,也可以通过

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

访问http://your-app.dev/admin/info时,调用命名空间Admin下的IndexController控制器里的info方法。这样写是不是麻烦,所以有了路由组,统一指定中间件,前缀和命名空间。

Route::group(['middleware' => ['web','admin.login'], 'prefix'=>'admin', 
'namespace'=>'Admin'], function () {
    Route::get('info','IndexController@info');
});

一个好处是可以在路由层过滤输入参数,如用正则表达式规定id为数字。

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
})->where('id', '[0-9]+');

路由不光要指定路径,还要指定get post any match等不同的获取方式,可以使用资源路由简化。

Route::resource('article','ArticleController');

在这里插入图片描述
相当于定义了7条路由,但是要按照指定方法访问,而HTTP表单不支持put patch和delete行为,所以需要增加一个隐藏的标签。这种方法因为可能影响同控制器定义的其他路由,所以不建议使用。

<form action="/foo/bar" method="POST">
    @method('PUT') //相当于 <input type="hidden" name="_method" value="PUT">
    @csrf
</form>

以上就是最基础的使用,手册上还有重定向、别名、生成URL、子域名、绑定模型、限流等功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值