威尼斯人线上娱乐

Laravel框架学习,Laravel框架路由配置总计

29 6月 , 2019  

php Laravel框架学习(三) 之 路由 

正文将携带大家共同上学 Laravel 路由的连带知识!

基本路由

 

基本路由

基本路由

您的应用程序的许多路由即将 app/routes.php 文件中定义。Laravel
中最轻易易行的路由由三个 U奥迪Q3I 和三个闭包调用组成。

基本 GET 路由

Route::get('/', function() {     return 'Hello World'; });

基本 POST 路由

Route::post('foo/bar', function() {     return 'Hello World'; });

注册一个路由以响应全体 HTTP 方法

Route::any('foo', function() {     return 'Hello World'; });

强制多个路由必须经过 HTTPS 访问

Route::get('foo', array('https', function() {     return 'Must be over HTTPS'; }));

再三您要求凭借路由发生 U凯雷德Ls,您能够通过行使 URL::to 方法:

$url = URL::to('foo');

您的应用程序的大许多路由将在 app/routes.php 文件中定义。Laravel
中最简便的路由由七个 UKoleosI 和三个闭包调用组成。

1、基本路由

最中央的 Laravel
路由只收到二个 U中华VI
和三个闭包,并以此提供三个特别轻巧且优雅的定义路由艺术:

Route::get('foo', function () {
    return 'Hello World';
});

暗中认可路由文件

全数Laravel路由都定义位于routes目录下的路由文件中,那些文件通过框架自动加载。routes/web.php文本定义了web分界面包车型大巴路由,这个路由被分配给web中间件组,从而得以提供session和csrf防护等作用。routes/api.php中的路由是无状态的,被分配到api高级中学级件组。

对许多选取来讲,都是从 routes/web.php 文件初阶定义路由。

有效的路由方法

作者们能够注册路由来响应任何 HTTP 央浼:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

神迹还索要注册路由响应三个 HTTP 央求——那能够由此 match
方法来落到实处。只怕,能够应用 any 方法注册叁个路由来响应全数 HTTP 乞求:

Route::match(['get', 'post'], '/', function () {
    //
});
Route::any('foo', function () {
    //
});

CSRF防护

web路由文件中负有央求格局为PUTPOSTDELETE的HTML表单都会含有一个CSSportageF令牌字段,不然,诉求会被驳回。关于CS途睿欧F的更加多细节,能够参见其文档:

<form method="POST" action="/profile">
    {{ csrf_field() }}
    ...
</form>

接纳中的大多数路都会定义在 app/routes.php
文件中。最简易的Laravel路由由U安德拉I和闭包回调函数组成。

路由参数

Route::get('user/{id}', function($id) {     return 'User '.$id; });

可选的路由参数

Route::get('user/{name?}', function($name = null) {     return $name; });

带私下认可值的可选的路由参数

Route::get('user/{name?}', function($name = 'John') {     return $name; });

带正则表达式约束的路由

Route::get('user/{name}', function($name) {     // }) ->where('name', '[A-Za-z]+');  Route::get('user/{id}', function($id) {     // }) ->where('id', '[0-9]+');

基本 GET 路由

2、路由参数

基本 GET 路由

路由过滤器

路由过滤器提供了一种限制访问钦命路由的简易的议程,那在您须求为你的站点创制要求申明区域的时候特别实用。Laravel
框架中带有了部分路由过滤器,举例 auth 过滤器、auth.basic
过滤器、guest 过滤器、以及 csrf
过滤器。它们被寄放在app/filters.php 文件中。

概念二个路由过滤器

Route::filter('old', function() {     if (Input::get('age') < 200)     {         return Redirect::to('home');     } });

借使贰个响应从四个路由过滤器中回到,这么些响应即被感到是其一央浼的响应,路由将不被实践,任何关于这么些路由的
after 过滤器也将被打消实践。

为三个路由钦定一个路由过滤器

Route::get('user', array('before' => 'old', function() {     return 'You are over 200 years old!'; }));

为三个路由钦命三个路由过滤器

Route::get('user', array('before' => 'auth|old', function() {     return 'You are authenticated and over 200 years old!'; }));

钦定路由过滤器参数

Route::filter('age', function($route, $request, $value) {     // });  Route::get('user', array('before' => 'age:200', function() {     return 'Hello World'; }));

当路由过滤器接收到作为第1个参数的响应 $response:

Route::filter('log', function($route, $request, $response, $value) {     // });

基本路由过滤器的形式

你大概希望依据 U昂科拉I 为一组路由钦命过滤器。

Route::filter('admin', function() {     // });  Route::when('admin/*', 'admin');

威尼斯人线上娱乐 ,在上边的事例中,admin 过滤器将使用带全体以 admin/
伊始的路由。星号作为一个通配符,将适配到具有字符的构成。

你也足以因而点名 HTTP 方法约束方式过滤器:

Route::when('admin/*', 'admin', array('post'));

过滤器类

对于高级级的过滤器,您能够运用叁个类代替闭包函数。因为过滤器类是身处应用程序之外的
IoC 容器,您能够在过滤器中动用依赖注入,更便于测量检验。

概念三个过滤器类

class FooFilter {      public function filter()     {         // Filter logic...     }  }

挂号一个基于类的过滤器

Route::filter('foo', 'FooFilter');

复制代码 代码如下:

必选参数

一时候大家需求在路由中抓获 U帕杰罗I 片段。举个例子,要从
URL 中捕获用户
ID,必要通过如下格局定义路由参数:

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

能够按要求在路由中定义多少个路由参数:

Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    //
});

路由参数总是通过花括号进行打包,那一个参数在路由被实行时会被传送到路由的闭包。

专注:路由参数不能够包括 - 字符,需求的话能够应用 _ 替代。

复制代码 代码如下:

命名路由

命名路由在更便于在扭转跳转或 UEscortLs
时钦命路由。您能够像这样为路由钦定三个名字:

Route::get('user/profile', array('as' => 'profile', function() {     // }));

您也得以为调控器的办法钦定路由名字:

Route::get('user/profile', array('as' => 'profile', 'uses' => 'UserController@showProfile'));

现行你在生成 UCR-VLs 或跳转的时候使用路由的名字:

$url = URL::route('profile');  $redirect = Redirect::route('profile');

您可以应用 currentRouteName 方法赢得四个路由的名字:

$name = Route::currentRouteName();

Route::get(‘/’, function()
{
return ‘Hello World’;
});

可选参数

偶然恐怕要求内定可选的路由参数,那能够通过在参数名后加二个 ?
标识来落到实处,这种状态下要求给相应的变量钦定暗中同意值:

Route::get('user/{name?}', function ($name = null) {
    return $name;
});
Route::get('user/{name?}', function ($name = 'John') {
    return $name;
});

Route::get(‘/’, function()
{
    return ‘Hello World’;
});

路由组

稍加时候你只怕希望选取过滤器到一组路由。您不须要为各类路由钦定过滤器,可以应用路由组:

Route::group(array('before' => 'auth'), function() {     Route::get('/', function()     {         // Has Auth Filter     });      Route::get('user/profile', function()     {         // Has Auth Filter     }); });

基本 POST 路由

3、命名路由

命名路由为生成 UEnclaveL 或重定向提供了便利。达成也很简短,在路由定义之后选择
name 方法链的形式来贯彻:

Route::get('user/profile', function () {
    //
})->name('profile');

还足认为调控器动作内定路由名称:

Route::get('user/profile', 'UserController@showProfile')->name('profile');

为命名路由生成UPAJEROL

为给定路由分配名称从此,就能够通过支持函数 route 为该命名路由生成
UPRADOL:

$url = route('profile');
$redirect = redirect()->route('profile');

若果命名路由定义了参数,可以将该参数作为第四个参数字传送递给 route
函数。给定的路由参数将会自行插入到 UTiggoL 中:

Route::get('user/{id}/profile', ['as' => 'profile', function ($id) {
    //
}]);
$url = route('profile', ['id' => 1]);

基本 POST 路由

子域名路由

Laravel 路由也能够管理通配符的子域名,并且从域名中赢得通配符参数:

登记子域名路由

Route::group(array('domain' => '{account}.myapp.com'), function() {      Route::get('user/{id}', function($account, $id)     {         //     });  });

复制代码 代码如下:

4、路由群组

路由群组允许大家在多个路由中国共产党享路由属性,例如中间件和命名空间等,那样的话我们就不供给为每一个路由独立定义属性。分享属性以数组的样式作为第一个参数被传送给
Route::group 方法。

复制代码 代码如下:

路由前缀

一组路由得以经过在质量数组中应用 prefix 选项为路由组增加前缀:

为路由组增多前缀

Route::group(array('prefix' => 'admin'), function() {      Route::get('user', function()     {         //     });  });

Route::post(‘foo/bar’, function()
{
return ‘Hello World’;
});

中间件

要给路由群组中定义的全部路由分配中间件,能够在群组属性数组中使用
middleware。中间件将会奉公守法数组中定义的相继依次试行:

Route::group(['middleware' => 'auth'], function () {
    Route::get('/', function () {
        // 使用 Auth 中间件
    });

    Route::get('user/profile', function () {
        // 使用 Auth 中间件
    });
});

Route::post(‘foo/bar’, function()
{
    return ‘Hello World’;
Laravel框架学习,Laravel框架路由配置总计。});

路由模型绑定

模型绑定提供了叁个简易的方法向路由中注入模型。举例,不止注入八个用户的
ID,您能够依赖钦赐的 ID 注入整个用户模型实例。首先使用 Route::model
方法钦点所急需的模子:

为模型绑定一个变量

Route::model('user', 'User');

下一场, 定义一个带有 {user} 参数的路由:

Route::get('profile/{user}', function(User $user) {     // });

因为我们早就绑定 {user} 参数到 User 模型,一个 User
实例将被注入到路由中。因而,举例三个profile/1 的央求将注入贰个 ID 为 1
User 实例。

注意: 尽管在数据库中并未找到这几个模型实例,将引发404荒唐。

如若你希望钦点您本人定义的远非找到的一举一动,您可以为 model
方法传递二个闭包作为第多少个参数:

Route::model('user', 'User', function() {     throw new NotFoundException; });

不经常候你愿意选取自个儿的形式管理路由参数,能够利用 Route::bind 方法:

Route::bind('user', function($value, $route) {     return User::where('name', $value)->first(); });

挂号一个路由以响应全部 HTTP 方法

命名空间

另一个通用的例子是路由群组分配同贰个 PHP
命名空间给其下的多个调控器,能够在分组属性数组中采纳
namespace来内定群组中具有调整器的公共命名空间:

Route::group(['namespace' => 'Admin'], function(){
    // 控制器在 "App\Http\Controllers\Admin" 命名空间下

    Route::group(['namespace' => 'User'], function(){
        // 控制器在 "App\Http\Controllers\Admin\User" 命名空间下
    });
});

暗许情状下,RouteServiceProvider
引进你的路由文件并钦点其下有所调控器类所在的私下认可命名空间App\Http\Controllers,因而,我们在概念的时候只要求钦赐命名空间
App\Http\Controllers 之后的有个别即可。

注册四个方可响应任何HTTP动作的路由

引发404错误

有二种艺术在路由中手动触发贰个404张冠李戴。首先,您能够使用 App::abort
方法:

App::abort(404);

附带,您能够抛出二个
Symfony\Component\HttpKernel\Exception\NotFoundHttpException 的实例。

越来越多关于处理404那几个和为那个错误使用使用自定义响应的音信方可在 错误
章节中找到。

复制代码 代码如下:

子域名路由

路由群组还足以被用来子域名路由通配符,子域名能够像 UWranglerI
同样被分配给路由参数,从而允许捕获子域名的一些用于路由或然调整器,子域名能够通过群组属性数组中的
domain 来指定:

Route::group(['domain' => '{account}.myapp.com'], function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});

复制代码 代码如下:

路由至调控器

Laravel 不唯有允许你路由至闭包,也足以路由至调控器类,以致同意创制财富支配器.

越来越多新闻请访问 调节器 文书档案。

正文章摘要自:Laravel4-中文手册


Route::any(‘foo’, function()
{
   return ‘Hello World’;
});

路由前缀

群组属性 prefix 能够用来为群组中每个路由增添二个给定 U卡宴I
前缀,比方,你可以为全数路由 U索罗德I 加多 admin 前缀 :

Route::group(['prefix' => 'admin'], function () {
    Route::get('users', function () {
        // 匹配 "/admin/users" URL
    });
});

Route::any(‘foo’, function()
{
    return ‘Hello World’;
});

强制一个路由必须通过 HTTPS 访问

5、路由模型绑定

流入模型ID到路由或调控器动作时,经常必要查询数据库工夫获取相应的模型数据。Laravel
路由模型绑定让流入模型实例到路由变得简单,举例,你能够将相称给定 ID
的整个 User 类实例注入到路由中,而不是直接流入用户 ID。

仅支持HTTPS的路由

复制代码 代码如下:

隐式绑定

Laravel 会自动分析定义在路由或调整器动作(变量名相称路由一些)中的
Eloquent 模型类型注明,比如:

Route::get('api/users/{user}', function (App\User $user) {
    return $user->email;
});

在这一个事例中,由于类别注脚了 Eloquent 模型 App\User,对应的变量名
$user 会匹配路由一些中的{user},那样,Laravel 会自动注入与央求 UHighlanderI
中传来的 ID 对应的用户模型实例。

倘使数据库中找不到对应的模型实例,会自动生成 HTTP 404 响应。

自定义键名

一经你想要隐式模型绑定使用数据表的其它字段,能够重写 Eloquent 模型类的
getRouteKeyName 方法:

/**
 * Get the route key for the model.
 *
 * @return string
 */
public function getRouteKeyName()
{
    return 'slug';
}

复制代码 代码如下:

Route::get(‘foo’, array(‘https’, function()
{
    return ‘Must be over HTTPS’;
}));

显式绑定

要注册显式绑定,供给利用路由的 model
方法来为给定参数钦命绑定类。应该在 RouteServiceProvider::boot
方法中定义模型绑定:

绑定参数到模型

public function boot()
{
    parent::boot();
    $router->model('user', 'App\User');
}

接下去,定义贰个包含 {user} 参数的路由:

$router->get('profile/{user}', function(App\User $user) {
     //
});

鉴于大家曾经绑定 {user} 参数到 App\User 模型,User
实例会被注入到该路由。因而,要是央浼 U奥迪Q3L 是profile/1,就能注入二个用户
ID 为 1 的 User 实例。

要是相称的模型实例在数据库不设有,会自动生成并回到 HTTP 404 响应。

自定义剖判逻辑

一旦你想要使用自定义的解析逻辑,需求接纳 Route::bind 方法,传递到
bind 方法的闭包会获取到 UTiguanI
诉求参数中的值,并且重返您想要在该路由中注入的类实例:

$router->bind('user', function($value) {
    return App\User::where('name', $value)->first();
});

Route::get(‘foo’, array(‘https’, function()
{
    return ‘Must be over HTTPS’;
}));

常常您必要依据路由爆发 U奥迪Q5Ls,您能够经过应用 U奥迪Q5L::to 方法:

6、表单方法伪造

HTML 表单不支持 PUTPATCH 或者 DELETE 央浼方法,由此,当定义
PUTPATCHDELETE 路由时,需求加上一个东躲广西的 _method
字段到表单中,其值被看做该表单的 HTTP 须求方法:

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

仍是能够使用扶助函数 method_field 来达成这一目标:

{{ method_field('PUT') }}

实际上支出中时常索要依据路由生成
U福睿斯L,URL::to方式就足以满足此必要:

复制代码 代码如下:

7、访问当前路由

您能够行使 Route 门面上的 currentcurrentRouteName
currentRouteAction 方法来访问管理当下输入诉求的路由信息:

$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();

参谋API文书档案理解路由门面底层类以及Route实例的越多可用方法。

 

$url =
URL::to(‘foo’);

$url = URL::to(‘foo’);

路由参数

路由参数

复制代码 代码如下:

复制代码 代码如下:

Route::get(‘user/{id}’, function($id)
{
    return ‘User ‘.$id;
});

Route::get(‘user/{id}’, function($id)
{
return ‘User ‘.$id;
});

可选路由参数

可选的路由参数

复制代码 代码如下:

复制代码 代码如下:

Route::get(‘user/{name?}’, function($name = null)
{
    return $name;
});

Route::get(‘user/{name?}’, function($name = null)
{
return $name;
});

包含私下认可值的可选路由参数

带暗中同意值的可选的路由参数

复制代码 代码如下:

复制代码 代码如下:

Route::get(‘user/{name?}’, function($name = ‘John’)
{
    return $name;
});

Route::get(‘user/{name?}’, function($name = ‘John’)
{
return $name;
});

用正则表达式限定的路由参数

带正则表明式约束的路由

复制代码 代码如下:

复制代码 代码如下:

Route::get(‘user/{name}’, function($name)
{
    //
})
->where(‘name’, ‘[A-Za-z]+’);

Route::get(‘user/{name}’, function($name)
{
//
})
->where(‘name’, ‘[A-Za-z]+’);
Route::get(‘user/{id}’, function($id)
{
//
})
->where(‘id’, ‘[0-9]+’);

Route::get(‘user/{id}’, function($id)
{
    //
})
->where(‘id’, ‘[0-9]+’);

路由过滤器

传送参数限定的数组

  路由过滤器提供了一种限制访问钦赐路由的不难的秘技,那在您必要为您的站点创制须要申明区域的时候特别管用。Laravel
框架中隐含了一部分路由过滤器,譬如 auth 过滤器、auth.basic 过滤器、guest
过滤器、以及 csrf 过滤器。它们被寄存在 app/filters.php 文件中。

本来,需求的时候你还足以传递二个分包参数限定的数组作为参数:

概念贰个路由过滤器

复制代码 代码如下:

复制代码 代码如下:

Route::get(‘user/{id}/{name}’, function($id, $name)
{
    //
})
->where(array(‘id’ => ‘[0-9]+’, ‘name’ => ‘[a-z]+’))

Route::filter(‘old’, function()
{
if (Input::get(‘age’) < 200)
{
return Redirect::to(‘home’);
}
});

概念全局格局

  假如多少个响应从一个路由过滤器中回到,这么些响应即被感到是那个诉求的响应,路由将不被实施,任何有关那些路由的
after 过滤器也将被注销施行。

假使指望在大局范围用钦赐正则表明式限定路由参数,能够动用 pattern 方法:

  为三个路由内定一个路由过滤器

复制代码 代码如下:

复制代码 代码如下:

Route::pattern(‘id’, ‘[0-9]+’);

Route::get(‘user’, array(‘before’ => ‘old’, function()
{
return ‘You are over 200 years old!’;
}));

Route::get(‘user/{id}’, function($id)
{
    // Only called if {id} is numeric.
});

为四个路由钦点多个路由过滤器

做客路由参数

复制代码 代码如下:

设若想在路由范围外访问路由参数,能够动用 Route::input 方法:

Route::get(‘user’, array(‘before’ => ‘auth|old’, function()
{
return ‘You are authenticated and over 200 years old!’;
}));

复制代码 代码如下:

点名路由过滤器参数

Route::filter(‘foo’, function()
{
    if (Route::input(‘id’) == 1)
    {
        //
    }
});

复制代码 代码如下:

路由过滤器

Route::filter(‘age’, function($route, $request, $value)
{
//
});
Route::get(‘user’, array(‘before’ => ‘age:200’, function()
{
return ‘Hello World’;
}));

路由过滤器提供了十分有益的诀窍来限制对应用程序中或多或少意义访问,例如对于急需说明能力访问的职能就不行政管理用。Laravel框架自个儿已经提供了一些过滤器,包含auth过滤器、auth.basic过滤器、guest过滤器以及csrf过滤器。那些过滤器都定义在app/filter.php文件中。

  当路由过滤器接收到作为第四个参数的响应 $response:

概念多少个路由过滤器

复制代码 代码如下:

复制代码 代码如下:

Route::filter(‘log’, function($route, $request, $response, $value)
{
//
});

Route::filter(‘old’, function()
{
    if (Input::get(‘age’) < 200)
    {
        return Redirect::to(‘home’);
    }
});

基本路由过滤器的情势

要是从路由过滤器中回到了一个response,那么该response将被以为对应的是此番request,路由将不会被推行,并且,此路由中具备定义在此过滤器之后的代码也都不会被试行。

您或者希望遵照 UWranglerI 为一组路由内定过滤器。

为路由绑定过滤器

复制代码 代码如下:

复制代码 代码如下:

Route::filter(‘admin’, function()
{
//
});
Route::when(‘admin/*’, ‘admin’);

Route::get(‘user’, array(‘before’ => ‘old’, function()
{
    return ‘You are over 200 years old!’;
}));

在地方的例证中,admin 过滤器将运用带全数以 admin/
起始的路由。星号作为三个通配符,将适配到全数字符的组合。

将过滤器绑定为调整器Action

你也能够透过点名 HTTP 方法约束格局过滤器:

复制代码 代码如下:

复制代码 代码如下:

Route::get(‘user’, array(‘before’ => ‘old’, ‘uses’ =>
‘UserController@showProfile’));

Route::when(‘admin/*’, ‘admin’, array(‘post’));

为路由绑定八个过滤器

过滤器类

复制代码 代码如下:

对于高档级的过滤器,您能够选取三个类取代闭包函数。因为过滤器类是放在应用程序之外的
IoC 容器,您能够在过滤器中央银行使重视注入,更便于测验。

Route::get(‘user’, array(‘before’ => ‘auth|old’, function()
{
    return ‘You are authenticated and over 200 years old!’;
}));

概念三个过滤器类

钦赐过滤器参数

复制代码 代码如下:

复制代码 代码如下:

class FooFilter {
public function filter()
{
// Filter logic…
}
}

Route::filter(‘age’, function($route, $request, $value)
{
    //
});

登记多个依照类的过滤器

Route::get(‘user’, array(‘before’ => ‘age:200’, function()
{
    return ‘Hello World’;
}));

复制代码 代码如下:

负有其后的过滤器将接受到 $response作为第多少个参数:

Route::filter(‘foo’, ‘FooFilter’);

复制代码 代码如下:

命名路由

Route::filter(‘log’, function($route, $request, $response, $value)
{
    //
});

命名路由在更便于在变化跳转或 UCR-VLs
时钦赐路由。您能够像这么为路由钦命三个名字:

依附方式的过滤器

复制代码 代码如下:

您也得以指针对U汉兰达I为一组路由钦定过滤器。

Route::get(‘user/profile’, array(‘as’ => ‘profile’, function()
{
//
}));

复制代码 代码如下:

你也可认为调节器的不二秘技钦赐路由名字:

Route::filter(‘admin’, function()
{
    //
});

复制代码 代码如下:

Route::when(‘admin/*’, ‘admin’);

  Route::get(‘user/profile’, array(‘as’ => ‘profile’, ‘uses’
=>
‘UserController@showProfile’));

上述案例中,admin过滤器将会选择到具有以admin/开始的路由中。星号是通配符,将会同盟任性多个字符的三结合。

  今后您在生成 UOdysseyLs 或跳转的时候利用路由的名字:

还足以针对HTTP动作限定格局过滤器:

复制代码 代码如下:

复制代码 代码如下:

$url = URL::route(‘profile’);
$redirect = Redirect::route(‘profile’);

Route::when(‘admin/*’, ‘admin’, array(‘post’));

你能够利用 currentRouteName 方法获得多个路由的名字:

过滤器类

复制代码 代码如下:

过滤器的高级用法中,仍是能够利用类来代表闭包函数。由于过滤器类是由此IoC
container完结分析的,全部,你能够在那么些过滤器中运用信赖注入(dependency
injection)的章程达成越来越好的测量试验技术。

$name = Route::currentRouteName();

概念贰个过滤器类

路由组

复制代码 代码如下:

有一点点时候你或然希望利用过滤器到一组路由。您不供给为各种路由内定过滤器,能够动用路由组:

class FooFilter {

复制代码 代码如下:

    public function filter()
    {
        // Filter logic…
    }

Route::group(array(‘before’ => ‘auth’), function()
{
Route::get(‘/’, function()
{
// Has Auth Filter
});
Route::get(‘user/profile’, function()
{
// Has Auth Filter
});
});

}

子域名路由

登记过滤器类

  Laravel 路由也可以管理通配符的子域名,并且从域名中获得通配符参数:

复制代码 代码如下:

注册子域名路由

Route::filter(‘foo’, ‘FooFilter’);

复制代码 代码如下:

命名路由

Route::group(array(‘domain’ => ‘{account}.myapp.com’), function()
{
Route::get(‘user/{id}’, function($account, $id)
{
//
});
});

重定向和生成UEnclaveL时,使用命名路由会更方便人民群众。你可认为路由内定贰个名字,如下所示:

路由前缀

复制代码 代码如下:

一组路由得以因此在性质数组中使用 prefix 选项为路由组加多前缀:

Route::get(‘user/profile’, array(‘as’ => ‘profile’, function()
{
    //
}));

为路由组增添前缀

还是可以为 controller action钦定路由名称:

复制代码 代码如下:

复制代码 代码如下:

Route::group(array(‘prefix’ => ‘admin’), function()
{
Route::get(‘user’, function()
{
//
});
});

Route::get(‘user/profile’, array(‘as’ => ‘profile’, ‘uses’ =>
‘UserController@showProfile’));

路由模型绑定

今日,你能够运用路由名称来创立UEvoqueL和重定向:

  模型绑定提供了多少个简约的主意向路由中流入模型。比方,不仅仅注入三个用户的
ID,您能够依赖钦赐的 ID 注入整个用户模型实例。首先使用 Route::model
方法内定所急需的模子:

复制代码 代码如下:

为模型绑定一个变量

$url =
URL::route(‘profile’);

复制代码 代码如下:

$redirect = Redirect::route(‘profile’);

Route::model(‘user’, ‘User’);

能够行使currentRouteName方法来取妥善前运营的路由名称:

然后, 定义一个包涵 {user} 参数的路由:

复制代码 代码如下:

复制代码 代码如下:

$name = Route::currentRouteName();

Route::get(‘profile/{user}’, function(User $user)
{
//
});

路由组

  因为我们曾经绑定 {user} 参数到 User 模型,贰个 User
实例将被注入到路由中。因而,例如三个 profile/1 的央求将注入贰个 ID 为 1
的 User 实例。

突发性你恐怕要求为一组路由使用过滤器。使用路由组就能够制止单身为每一个路由钦命过滤器了:

  注意: 要是在数据库中从不找到这些模型实例,将抓住404漏洞非常多。

复制代码 代码如下:

  借让你希望内定您自身定义的远非找到的一举一动,您可以为 model
方法传递贰个闭包作为第4个参数:

Route::group(array(‘before’ => ‘auth’), function()
{
    Route::get(‘/’, function()
    {
        // Has Auth Filter
    });

复制代码 代码如下:

    Route::get(‘user/profile’, function()
    {
        // Has Auth Filter
    });
});

Route::model(‘user’, ‘User’, function()
{
throw new NotFoundException;
});

子域名路由

  有时你愿意选择本人的方式处理路由参数,能够运用 Route::bind 方法:

Laravel中的路由功效还扶助通配符子域名,你能够在域名中钦定通配符参数:

复制代码 代码如下:

注册子域名路由

Route::bind(‘user’, function($value, $route)
{
return User::where(‘name’, $value)->first();
});

复制代码 代码如下:

引发404错误

Route::group(array(‘domain’ => ‘{account}.myapp.com’), function()
{

  有二种办法在路由中手动触发贰个404谬误。首先,您能够利用 App::abort
方法:

    Route::get(‘user/{id}’, function($account, $id)
    {
        //
    });

复制代码 代码如下:

});

App::abort(404);

路由前缀

说不上,您能够抛出贰个Symfony\Component\HttpKernel\Exception\NotFoundHttpException
的实例。

能够透过prefix属性为组路由安装前缀:

越多关于处理404不行和为这几个错误使用使用自定义响应的音信方可在 错误
章节中找到。

为路由组织设立置前缀

路由至调整器

复制代码 代码如下:

Laravel 不止允许你路由至闭包,也足以路由至调节器类,乃至同意创建财富支配器.

Route::group(array(‘prefix’ => ‘admin’), function()
{

越来越多新闻请访问 调控器 文书档案。

    Route::get(‘user’, function()
    {
        //
    });

你或者感兴趣的稿子:

  • Laravel框架路由设置与应用示例
  • Laravel框架模板加载,分配变量及简便路由成效示例
  • ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
  • Laravel
    5框架学习之模型、调整器、视图基础流程
  • Laravel5.1数据库连接、创设数据库、创设model及创造调控器的法子
  • Laravel
    5框架学习之路由、调控器和视图简要介绍
  • Laravel框架数据库CU哈弗D操作、连贯操作计算
  • Laravel 5 框架入门(一)
  • Laravel
    5框架学习之数据库迁移(Migrations)
  • Laravel 5框架学习之Blade
    简单介绍
  • Laravel框架路由和调控器的绑定操作方法

});

路由与模型绑定

模型绑定,为在路由中流入模型实例提供了便利的路子。譬如,你能够向路由中注入匹配用户ID的百分百模型实例,而不是单独注入用户ID。首先,使用
Route::model 方法钦赐要被注入的模型:

将参八个模子

Route::model(‘user’, ‘User’);
然后,定义贰个包罗{user}参数的路由:

复制代码 代码如下:

Route::get(‘profile/{user}’, function(User $user)
{
    //
});

出于大家已将{user}参数绑定到了User模型,由此得以向路由中流入一个User实例。比方,对profile/1的走访将会把ID为1的User实例注入到路由中。

留意: 假诺在数据库中不可能同盟到对应的模子实例,404荒谬将被抛出。
设若您期望自定义”not found”行为,可以透过传递三个闭包函数作为 model
方法的第八个参数:

复制代码 代码如下:

Route::model(‘user’, ‘User’, function()
{
    throw new NotFoundException;
});

假设您想协和实现路由参数的分析,只需利用Route::bind方法就可以:

复制代码 代码如下:

Route::bind(‘user’, function($value, $route)
{
    return User::where(‘name’, $value)->first();
});

抛出 404 错误

有三种从路由中手动触发404荒唐的主意。首先,你能够选拔App::abort方法:

复制代码 代码如下:

App::abort(404);

说不上,你能够抛出Symfony\Component\HttpKernel\Exception\NotFoundHttpException异常。

更加的多关于管理404特别以及错误爆发时自定义response的新闻方可查看错误文书档案。

决定器路由

Laravel不光提供了动用闭包函数管理路由的职能,还足以路由到调整器,以至援救创造resource controllers。

你或然感兴趣的稿子:

  • Laravel实现定期职分的身体力行代码
  • 源码深入分析 Laravel
    重复实施同一个队列职务的缘由
  • Laravel中职务调节console使用办法小结
  • PHP开拓框架Laravel数据库操作方法总括
  • Laravel框架表单验证详解
  • Laravel框架中扩张函数、增加自定义类的主意
  • 跟我学Laravel之视图 &
    Response
  • Laravel日志用法详解
  • PHP框架Laravel插件Pagination达成自定义分页
  • Laravel
    5框架学习之数据库迁移(Migrations)
  • Laravel框架实现定时公布任务的办法


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图