前言

laravel5.6学习记录,学习最新的版本

Laravel5.6

路由的拓展

我们写网站后台,一般都是admin什么的文件夹,来表示后台文件,
访问的时候需要加上https://localhost/admin/xxx
路由很方便的解决了这个问题.

1
2
3
4
5
6
7
8
9
//web.php
Route::prefix('admin')->group(function (){
Route::get('noone','[email protected]');
//get请求
Route::any('notwo','[email protected]')->name('notwo');
//所有请求,命名路由
Route::match(['get','post'],'nothree/{uid}','[email protected]')->where('uid', '[0-9]+');
//get或者post请求,一个参数,以及正则匹配是否是数字
});

统一的加上了admin前缀,prefix('前缀')

group()是一个路由组,把一些路由放在一起,添加中间件等等

这里我们在深入一些.

1
2
3
4
//index.blade.php

视图名 index.blade.php
返回内容{{$uid}}---{{$name}}

视图

1
2
3
4
5
6
7
8
9
//web.php
Route::prefix('admin')->namespace('Admin')->group(function () {
Route::match(['get', 'post'], 'nothree/{uid}/{name}', '[email protected]')
->where([
'uid' => '[0-9]+',
'name' => '[a-z]+'
]);
//get或者post请求,一个参数,以及正则匹配是否是数字
});

路由,prefix设置前缀,namespace是命名空间,如果一个项目有很多控制器,
把它们全部放到app\Http\Controllers,是不太好,
还有一些需求,有相同的控制器名称,
可以多分一些子目录,Admin、Home、Article…
这个时候namespace就派上用场了

1
2
//artisan创建也是能加目录的
php artisan make:controller Admin/AucController

我们可以新建控制器到Admin目录.

1
2
3
4
5
6
//AucController.php
public function noThree($uid,$name)
{
//返回一个视图,并传值到视图
return view('studys.index')->with(compact('uid','name'));
}

注意这里的参数接收是按顺序来的,如果换成noThree($name,$uid),
那么两个值就uid接的是name、name接的是uid.

我们访问http://laravel.study/admin/nothree/6666/Useri.

还有一点,路由参数的约束,如果每个路由都要约束同样的参数,
代码就冗余了,Laravel也帮我们想到了.

1
2
3
4
5
6
7
//app\Providers\RouteServiceProvider.php
public function boot()
{
Route::pattern('id', '[0-9]+');

parent::boot();
}

RouteServiceProviderboot方法添加.
这属于全局约束,参数为id的都能被[0-9]+'约束到.

End