2016-12-08 4 views
0

Я пытаюсь сделать этот дизайн REST, но у меня проблемы.Laravel 5.3 Route :: ресурс с параметрами до фактического параметра ресурса

У меня есть ресурс под названием list

Я хочу, прежде чем /list это иметь динамический параметр, как так {username}/list и есть варианты CRUD как редактировать {username}/list/{id}/edit и так далее.

ответ

2

Используя метод ::resource вы можете диктовать иерархическую схему маршрутизации с помощью . между вашими моделями, например:

Route::resource('user.list', 'ListController'); 

Это будет производить что-то вроде этого:

/user/{user}/list/{list} 

Однако вы хотите чтобы иметь имя пользователя - это нормально, нам просто нужно добавить некоторые явные привязки модели в вашем App\Providers\RouteServiceProvider

Route::bind('user', function($value)(){ 
    if(is_numeric($value)) { 
     return User::find($value); 
    } else { 
     return User::where('username', $value)->first(); 
    } 
}); 

Добавление этого explicit model binding будет пытаться разрешить пользователю через dependency injection сначала ID, если значение $ является числовым. Если нет, то он попытается сопоставить значение с столбцом имени пользователя в таблице пользователя.

Надеюсь, это поможет.