laravel之路由
laravel5.3
路由已经从app/Http下已经分离到根目录的route目录下,分别有api.php,console.php,web.php
闭包形式路由定义
Route::get('访问地址',function(){
return 'Hello World';
})
控制器形式
简单
Route::get('/','HomeController@index');
带命名空间
Route::get('/','Front\HomeController@index');
命名路由
Route::get('/','Front\HomeController@index')->name('front.index');
//调用这个路由的地址
route('front.index')
//命名路由定义了参数
route('front.index','parameter')
路由正则where([])
Route::get('/{id}','Front\HomeController@index')->name('front.index');->where('id', '[\d]+')
全局路由正则约束
RouteServiceProvider类
/**
* 定义路由模型绑定,模式过滤器等
*
* @param \Illuminate\Routing\Router $router
* @return void
* @translator http://laravelacademy.org
*/
public function boot(Router $router){
$router->pattern('id', '[0-9]+');
parent::boot($router);
}
命名路由
Route::get('user/profile', ['as' => 'profile', function () {
//
}]);
路由群组
Route::group([配置参数],function(){
});
群组属性 prefix
子域名路由domain
命名空间namespace
中间件middleware
例如综合使用
Route::group(['middleware'=>'auth','prefix'=>'auth','namespace'=>'Auth','domain'=>'{account}.myapp.com'],function(){
});
支持方法有
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
Route::get($uri, $callback);
Route::post($uri, $callback);//post提交路由
Route::put($uri, $callback);//更新操作
Route::patch($uri, $callback);//更新操作
Route::delete($uri, $callback);//删除操作
Route::options($uri, $callback);//
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
ONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
多方法
//post和get
Route::match(['get', 'post'], '/', function () {
//
});
//任意方法
Route::any('foo', function () {
//
});
路由参数
必须参数
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
可选参数
Route::get('user/{id?}', function ($id) {
return 'User '.$id;
});
路由模型绑定
注入模型ID到路由或控制器动作时,通常需要查询数据库才能获取相应的模型数据。Laravel 路由模型绑定让注入模型实例到路由变得简单,例如,你可以将匹配给定 ID 的整个 User 类实例注入到路由中,而不是直接注入用户 ID。
Route::get('/{user}', 'Front\FrontController@index')
->name('front.index')->where('user', '[\d]+');;
控制器
public function index(User $user)
{
print_r($user->toArray());
return view('welcome');
}
这样就可以取得用户信息了,直接省略了User::find(id)操作,直接注入,默认是使用id这个字段
对应的变量名 $user 会匹配路由片段中的{user},这里的user需要和你的index注入的名字保持一致
更改隐式绑定id
public function getRouteKeyName()
{
return 'slug';
}