什么是laravel 5.1中的`Route Binding`

问题描述 投票:1回答:2

什么是Route Binding在laravel。为什么我们使用这个。你能用简单的语言解释我吗?

laravel laravel-5 laravel-5.1 laravel-routing
2个回答
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文档。


0
投票

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

  1. Official Documentation - Laravel Version 5.1.*
  2. Laracasts Video - Laravel Version 5.0.*

或者,@ KhanShahrukh提供的解决方案应该可以解决您的疑问。

© www.soinside.com 2019 - 2024. All rights reserved.