【问题标题】:What is `Route Binding` in laravel 5.1什么是 laravel 5.1 中的“路由绑定”
【发布时间】:2016-04-19 09:12:32
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    以下是 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 实例。

    如果您希望指定自己的“未找到”行为,请将闭包作为第三个参数传递给模型方法:

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

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

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

    关于路由的详细说明可以在 this link 到 Laravel 文档中找到。

    【讨论】:

      【解决方案2】:

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

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

      否则,@KhanShahrukh 给出的解决方案应该可以解决您的疑问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-15
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-02
        • 2016-02-11
        • 2016-04-13
        相关资源
        最近更新 更多