laravel框架——路由
(一)、简介
laravel中的MVC则是通过路由功能映射到对应的程序(控制器方法),通过路由将用户的请求发送到对应的程序进行处理,其作用就是建立url和处理程序之间的映射关系,这样做有一个好处,对url进行美化只需要修改路由而无需对程序本身进行修改。
laravel中请求类型包括:get、post、put、patch、delete。
route.php是laravel的路由文件,所有的路由映射都要通过编辑route.php文件进行代码书写。
(二)、路由学习
1、基本路由
get请求:
<?php
//基本路由的get请求
Route::get('get_base', function(){
return 'get request base';
});
浏览器输入:http://127.0.0.1/laravel/public/get_base
页面输出:get request base
post请求:
<?php
//基本路由的post请求
Route::post('post_base', function(){
return 'post request base';
});
以上路由需要通过post方式请求
请求后页面输出:post request base
2、多请求路由
顾名思义,多请求路由则是可以通过多种请求方式进行请求,多请求路由主要有两种方式,match和any。
(1)、match接收请求类型的数组从而限定请求的类型:
<php
//多请求路由match
Route::match(['get','post'], 'multi', function(){
return 'multi post or get';
});
url:http://127.0.0.1/laravel/public/multi
此路由可通过get、post请求
请求后返回字符串:multi post or get
(2)、any方式
<?php
//any方式
Route::any('multi', function(){
return 'multi get or post';
});
url:http://127.0.0.1/laravel/public/multi
请求返回字符串:multi get or post
3、路由参数
给路由绑定参数,接收参数进行处理
(1)、必选参数
<?php
//带参数的路由
Route::get('myname/{name}', function($name){
return 'my name is '.$name;
});
url:http://127.0.0.1/laravel/public/myname/yuwenbo
get访问后页面输出:my name is yuwenbo
(2)、可选参数($userid=null表示默认值,可设置没有参数时的默认值)
<?php
//可选参数绑定
Route::get('user/{userid?}', function($userid=null){
return 'userid is '.$userid;
});
访问url:http://127.0.0.1/laravel/public/user/username
输出:userid is username
访问url:http://127.0.0.1/laravel/public/user
输出:userid is
可选参数绑定使得路由很灵活
(3)、路由参数过滤(用正则表达式对传入的参数进行过滤)
<?php
/* 参数过滤 */
//单个参数过滤
Route::get('num/{num?}', function($num=15){
return 'this num is '.$num;
})->where('num','[0-9]+');
访问url:http://127.0.0.1/laravel/public/num/5
返回输出:this num is 5
访问url:http://127.0.0.1/laravel/public/num
返回输出:this num is 15
访问url:http://127.0.0.1/laravel/public/num/fhdja
页面报错
//多个参数过滤
Route::get('info/{name}/{age?}', function($name,$age=null){
return 'name is '.$name.', age is '.$age;
})->where(['name' => '[a-zA-Z]+', 'age' => '[1-9]+']);
可使用数组形式过滤多个参数
4、路由别名
给路由通过[‘as’ => ‘alias’]数组使用别名后,可通过route(‘别名’)生成url,请看代码理解:
<?php
//路由别名
Route::get('student/info',['as' => 'studentInfo' ,function(){
//通过route('studentInfo')生成完成url后返回
return route('studentInfo');
}]);
访问url:http://127.0.0.1/laravel/public/student/info
页面返回:http://127.0.0.1/laravel/public/student/info
注:别名的好处在于,以后在控制器中使用route('别名')的方式生成url后,即便修改了路由的名字,也不用再修改控制器程序,因为通过别名程序能自动生成修改后的url
5、路由群组
通过关键字group创建路由群组
<?php
/* *路由群组 */
Route::group(['prefix' => 'admin'], function(){
//此时的访问地址:http://127.0.0.1/laravel/public/admin/student/info
Route::get('student/info',['as' => 'studentInfo' ,function(){
return route('studentInfo');
}]);
//此时的访问地址:http://127.0.0.1/laravel/public/admin/info/yuwenbo/20
Route::get('info/{name}/{age?}', function($name,$age=null){
return 'name is '.$name.', age is '.$age;
})->where(['name' => '[a-zA-Z]+', 'age' => '[1-9]+']);
});
此时的访问地址url必须要加上群组前缀,否则将不能访问
6、路由中输出视图
通过view()函数输入视图
<?php
/** * 路由中输出视图 */
//框架的欢迎界面路由
Route::get('/',function(){
return view('welcome');
});
访问url:http://127.0.0.1/laravel/public
浏览器显示laravel的欢迎界面
//做如下修改
Route::get('welcome',function(){
return view('welcome');
});
修改后访问url:http://127.0.0.1/laravel/public/welcome
浏览器同样显示laravel的欢迎界面
一般情况是不会在路由中输出视图的。