laravel

laravel之路由

2018-05-22  本文已影响19人  空气KQ

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';
    }
上一篇下一篇

猜你喜欢

热点阅读