Laravel 8 自定義解析邏輯

2021-07-16 17:57 更新

如果您希望使用自己的解析邏輯,應(yīng)該使用 Route::bind 方法。傳遞給 bind 方法的 閉包 將接收 URI 中大括號(hào)對(duì)應(yīng)的值,并返回您想要在該路由中注入的類的實(shí)例:

/**
 * 定義你的路由模型綁定, pattern 過(guò)濾器等
 *
 * @return void
 */
public function boot()
{
    Route::bind('user', function ($value) {
        return App\Models\User::where('name', $value)->firstOrFail();
    });

    // ...
}

或者,您可以重寫 Eloquent 模型上的 resolveRouteBinding 方法。 此方法會(huì)接受 URI 中大括號(hào)對(duì)應(yīng)的值,并且返回你想要在該路由中注入的類的實(shí)例:

/**
 * 檢查綁定值的模型
 *
 * @param  mixed  $value
 * @param  string|null  $field
 * @return \Illuminate\Database\Eloquent\Model|null
 */
public function resolveRouteBinding($value, $field = null)
{
    return $this->where('name', $value)->firstOrFail();
} 

如果路由使用隱式綁定作用域,resolveChildRouteBinding 方法將用于解析父模型的子綁定:

/**
 * 檢索子模型以獲取綁定值。
 *
 * @param  string  $childType
 * @param  mixed  $value
 * @param  string|null  $field
 * @return \Illuminate\Database\Eloquent\Model|null
 */
public function resolveChildRouteBinding($childType, $value, $field)
{
    return parent::resolveChildRouteBinding($childType, $value, $field);
} 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)