参考:
路由配置
请先浏览顶部的官方链接的参考文档。这里只是简单的实例。
5.4的路由位置进行了改变
有状态和无状态区别可以参考文章:
基础路由
对应可以使用的方法有get、post、put、delete等
Route::get('basic1', function() {
return 'Hello World';
});
Route::post('basic2', function() {
return 'Baisc2';
});
多请求路由
对于多种请求的路由定义可以通过match和any方法实现,match需要设置请求方法数组、URL地址和请求处理函数三个参数,第一个参数要以数组的方式设置允许的请求方法,而any方法则对应所有HTTP请求方法。
Route::match(['get', 'post'], 'multy1', function() {
return 'multy1';
});
Route::any('multy2', function() {
return 'multy2';
});
路由参数
通常情况下,GET请求可以通过URL地址(QueryString)的方式向服务器传递参数,在Laravel框架中有更优雅的形式传递参数,即通过路由参数进行传递。路由参数主要针对是GET请求的情况。
以下示例,其中?代表是一个可选参数,所以当参数值存在时,函数参数会正常接收,如果不存在,则会使用定义好的闭包函数的参数默认值。
where 可以选择添加对路由参数 正则表达式的验证,只有满足正则表达式的路由参数才能匹配路由,否则无法找到对应路由。
Route::get('user/{id}', function($id) {
return 'User-id-' . $id;
});
Route::get('user/{name?}', function($name = null) {
return 'User-name-' . $name;
});
Route::get('user/{name?}', function($name = 'sean') {
return 'User-name-' . $name;
});
Route::get('user/{name?}', function($name = 'sean') {
return 'User-name-' . $name;
})->where('name', '[A-Za-z]+');
Route::get('user/{id}/{name?}', function($id, $name = 'sean') {
return 'User-id-' . $id . '-name-' . $name;
})->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);
路由别名
路由别名相当于在在路由定义的时候,为路由起了一个别名,在以后的程序中可以通过这个别名来获取路由信息。
Route::get('user/center', ['as' => 'center', function() {
return route('center');
}]);
这里起 了一个路由别名,以后可以使用这个路由名称产生URL地址或者重定向,如果$url=route('center');
路由群组
当一个项目很大时,会定义很多的路由,对路由进行分组将使得程序更加规范易读,而路由群组就是给某一类路由进行分组,同时给这个路由组添加中间件、前缀、子域名等,使路由定义更加简洁。
Route::group(['prefix' => 'member'], function() {
Route::get('user/center', ['as' => 'center', function() {
return route('center');
}]);
Route::any('multy2', function() {
return 'member-multy2';
});
});
路由中输出视图
Route::get('view', function () {
return view('welcome');
});
路由与控制器关联
Route::get('member/info', 'MemberController@info');
Route::any('member/info', ['uses' => 'MemberController@info']);
Route::any('member/info', [
'uses' => 'MemberController@info',
'as' => 'memberinfo'
]);
Route::any('member/{id}', ['uses' => 'MemberController@info'])
->where('id', '[0-9]+');
Route::controller('member', 'MemberController');
资料