路由模型綁定

2018-02-24 15:51 更新

Laravel 模型綁定提供方便的方式將模型實體注入到您的路由中。例如,比起注入 User ID ,你可以選擇注入符合給定 ID 的 User 類實體。

首先,使用路由的 model 方法指定特定參數(shù)要對應(yīng)的類,您應(yīng)該在 RouteServiceProvider::boot 方法定義您的模型綁定:
綁定參數(shù)至模型

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

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

然后定義一個有 {user} 參數(shù)的路由:

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

因為我們已經(jīng)將 {user} 參數(shù)綁定到 App\User 模型,所以 User 實體將被注入到路由。所以舉例來說,請求至 profile/1 將注入 ID 為 1 的 User 實體。

注意: 如果在數(shù)據(jù)庫中找不到匹配的模型實體,將引發(fā) 404 錯誤。

如果您想要自定「沒有找到」的行為,將閉包作為第三個參數(shù)傳入 model 方法:

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

如果您想要使用您自己決定的邏輯,您應(yīng)該使用 Route::bind方法。閉包通過 bind 方法將傳遞 URI 區(qū)段數(shù)值,并應(yīng)該返回您想要被注入路由的類實體:

Route::bind('user', function($value)
{
    return User::where('name', $value)->first();
});
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號