laravel路由知识【附laravel5.8视频教程】
2019-06-18 本文已影响56人
这真的是一个帅气的名字
有时候写了路由,明明是对的,但是访问的话报错可以尝试清除路由缓存
php artisan route:clear
php artisan route:cache
另外查看路由列表命令
php artisan route:list
中间件
- 比如一些操作必须是用户登录之后才可以操作,可以把这些路由放在一起写,于是,就有了
middleware
ex:
Route::group(['middleware' => 'is.admin',],function (){
//这里是经过is.admin验证过滤的路由
//TODO
});
如果自带的满足不了,可以自己make一个middleware
首先创建一个middleware
运行命令
php artisan make:middleware CheckIsAdmin
文件地址在/app/Http/Middleware/CheckIsAdmin.php
如果验证可以用自带的auth
if(!Auth::check()){
return redirect()->route('admin.login');
}
image.png
然后再kernel里面$routeMiddleware
下面注册一下
image.png
路由里面使用
/*
* middleware Kernel里面$routeMiddleware的中间件
*prifix 路由的前缀
*namespace 命名空间
* */
Route::group(['prefix' => 'admin', 'namespace'=>'Admin',],function (){
Route::get('/login','LoginController@login')->name('admin.login');
Route::post('/dologin','LoginController@dologin')->name('admin.dologin');
// 需要登录后才可以访问的路由
Route::group(['middleware' => 'is.admin',],function (){
});
});
如果路径都是admin下面。那么用prefix
可以把admin路径提出来,使代码更简洁
如果控制器都在Admin下面,namespace
的作用是把Admin统一提出来。
上面代码如果不用perfix和namespace:
Route::group(function (){
Route::get('/admin/login','Admin\LoginController@login')->name('admin.login');
Route::post('/admin/dologin','Admin\LoginController@dologin')->name('admin.dologin');
// 需要登录后才可以访问的路由
Route::group(['middleware' => 'is.admin',],function (){
});
});
可以对比找一下区别
Route[xxxx] not defined解决
一般在路由后面加上->name('xxxx');
就可以了
本人有份laravel5.8教学课程,需要的同学可以关注公众号:小贝壳的资源库恢复laravel获取
小贝壳的资源库