codecamp

路由模型绑定

Laravel 模型绑定提供方便的方式将模型实体注入到您的路由中。例如,比起注入 User ID ,你可以选择注入符合给定 ID 的 User 类实体。

首先,使用路由的 model 方法指定特定参数要对应的类,您应该在 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 实体。

注意: 如果在数据库中找不到匹配的模型实体,将引发 404 错误。

如果您想要自定「没有找到」的行为,将闭包作为第三个参数传入 model 方法:

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

如果您想要使用您自己决定的逻辑,您应该使用 Route::bind方法。闭包通过 bind 方法将传递 URI 区段数值,并应该返回您想要被注入路由的类实体:

Route::bind('user', function($value)
{
    return User::where('name', $value)->first();
});
路由群组
抛出 404 错误
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

环境配置

系统服务

哈希

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }