什么是laravel 5.1中的`Route Binding`

时间:2016-01-14 06:20:08

标签: laravel laravel-5 laravel-5.1 laravel-routing

laravel中Route Binding是什么。为什么我们使用这个。你能用简单的话来解释我吗。

2 个答案:

答案 0 :(得分:2)

以下是Laravel网站上路由模型绑定的详细信息,我认为这很容易理解。

  

Laravel模型绑定提供了一种将类实例注入路径的便捷方法。例如,您可以注入与给定ID匹配的整个User类实例,而不是注入用户ID。

     

首先,使用路由器的模型方法指定给定参数的类。您应该在RouteServiceProvider :: boot方法中定义模型绑定:

将参数绑定到模型

public function boot(Router $router)
{
parent::boot($router);

$router->model('user', 'App\User');
}

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

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

由于我们已将{user}参数绑定到App \ User模型,因此将在路由中注入User实例。因此,例如,对profile / 1的请求将注入ID为1的User实例。

如果您想指定自己的"未找到"行为,将Closure作为第三个参数传递给模型方法:

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

如果您希望使用自己的解析逻辑,则应使用Route :: bind方法。传递给bind方法的Closure将接收URI段的值,并且应该返回要注入到路由中的类的实例:

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

有关路由的详细说明,请参阅this link到Laravel文档。

答案 1 :(得分:0)

这里有两个链接可以给你一些粗略的想法:

  1. Official Documentation - Laravel Version 5.1.*
  2. Laracasts Video - Laravel Version 5.0.*
  3. 否则,@ KhanShahrukh提供的解决方案应该可以解决您的疑问。