路由:将用户的请求按照事先规划的方案提交给指定的控制器或者功能函数来进行处理
通俗的说:就是访问地址的形式
路由配置文件:routes/web.php文件
前情提要:laravel中的项目入口文件在public/index.php
所以路由前都要加index.php,就很烦,看起来很不舒服。
解决:
(1)Apache开启laravel重写路由
①加载Apache的Rewrite模块,找到下面的选项,去掉前面的#号注释
LoadModule rewrite_module modules/mod_rewrite.so
②允许.htaccess文件重写配置
<Directory "D:/laravel/public/">
AllowOverride All
</Directory>
然后重启Apache服务器
在以下路由中,第二个参数都是回调函数,而在真正的项目中,是不会用到的,而是把路由交给控制器中的方法来处理
Route::get('/test', 'TestController@test');
1.laravel基础路由
//get请求,结果如下图
Route::get('/home',function (){
return 'get请求';
});
// home为路由,function为回调函数
Route::post('/home',function (){
return 'post请求';
});
2.多请求路由
//自定义多请求,自定义的请求放在下面的数组中
Route::match(['get','post'],'multy',function(){
return "多请求路由";
});
//响应所有请求
Route::any('multy2',function (){
return '响应所有请求';
});
3.路由参数
//必选参数
Route::get('user/{id}',function ($id){
return '用户的id是'.$id;
});
//可选选参数
Route::get('user/{id?}',function ($id =1){ // 可选参数需要有默认值
return '用户的id是'.$id;
});
4.路由参数的验证
// 字段验证,名字必须为字母
Route::get('name/{name?}',function ($name = 'Doubly'){
return '用户名为'.$name;
})->where('name','[A-Za-z]+');
//多个参数,并且带有参数验证,用数组
Route::get('user/{id}/{name?}',function ($id,$name = 'Doubly'){
return "ID为{$id}的用户名为{$name}";
})->where(['id'=>'\d+','name'=>'[A-Za-z]+']);
5.路由别名(一般没必要,在路由过长时使用)
//路由别名
Route::get('user/help',['as'=>'help',function(){
return '路由别名:'.route('help');
}]);
6.路由群组
// 以下路由中,都需要加前缀memeber再跟路由访问
Route::group(['prefix'=>'member'],function (){
Route::get('basic1',function (){
return '路由群组中的basic1';
});
Route::get('basic2',function (){
return '路由群组中的basic2';
});
});
7.路由访问视图(项目中,不会用到,简单知道就好)
//路由中输出视图
Route::get('view',function(){
return view('welcome');
});
8.资源路由
Route::resource('user', 'UserController');
当前路由中UserController中所有方法都可以成为路由
使用方法
{{route('user.create')}} // 路由名.方法名