路由介绍
1.简单说就是将用户的请求转发给相应的程序去处理
2.作用是建立url和程序之间的映射
3.请求类型get.put,post,patch,delete等
4.任何框架都离不开路由器,TP是通过地址栏规则生成,如xxx.com/home/user/add;
注意:web中间件从laravel 5.2.27版本以后默认全局加载,不需要自己手动载入,如果自己手动重复载入,会导致session无法加载的情况
路由如何调用控制器
laravel的路由与控制器之间的关系,需要明确在<project>/app/Http/routes.php文件中明确定义。如果存在两个相同的路由,则只响应第二个路由,并不是覆盖掉第一个路由。
基础路由
Route::get('/', function () {
return view('welcome');
});
多请求路由
// match 可以匹配get请求和post请求
Route::match(['get','post'],'admin/login',function(){
return view('welcome');
});
// any包括所有的请求方式
Route::any('admin/register',function(){
return view('welcome');
});
路由传参数
// 传递单个参数
Route::get('home/user/{id}',function($id){
return 'user'.$id;
});
// 传递多个参数
Route::get('user/{id}/{name}',function($id,$name){
return 'user'.$id.$name;
});
路由传递可选参数
Route::get('user/{page?}',function($page = 1){
return 'user'.$page;
});
参数限制
普通限制:-where('要限制的参数名','限制规则(正则,不用斜线//)');
数组形式:-where(['要限制的参数名1'=>'限制规则(正则,不用斜线//)','要限制的参数名1'=>'限制规则(正则,不用斜线//)']);
// 普通限制
Route::get('user/{name}',function($name){
return 'user'.$name;
})->where('name','[A-Za-z]*');
// 数组形式
Route::get('user/{id}/{name}',function($id,$name){
return 'user'.$id.$name;
})->where(['id'=>'[1-9]*','name'=>'[A-Za-z]*']);
资源路由
Route::resource('category','CategoryController');
分组路由
Route::group(['middleware'=>'admin.login','prefix'=>'admin','namespace'=>'Admin'], function () {
Route::any('index','IndexController@index');
Route::any('info','IndexController@info');
Route::any('exit_login','LoginController@exit_login'); // 退出登陆
Route::any('pass','IndexController@pass');
Route::any('upload','CommonController@upload');
Route::post('cate/changeorder','CategoryController@changeorder');
Route::resource('category','CategoryController');
Route::resource('article','ArticleController');
Route::any('create_order','OrderController@create_order');
});