Я попытался разработать приложение и хотел бы использовать привязку маршрута, но что-то не так, и я не знаю, что это такое. Plz, посмотрите код ниже и помогите мне, что это не так.
Маршрут
| | PATCH | api/v1/filial/{filial} | | Genesis\Base\Filial\Controllers\FilialController@update | auth:api |
Модель
class Filial extends Model{
/**
* @var string
*/
protected $table = "filiais"; ...
Контроллер
class FilialController extends BaseFormController{...
public function update(FilialRequest $request, Filial $filial){
dd($filial);
}...
И тогда на выходе получается пустая модель. Я не знаю, что это не так, параметры, Модель, Uri все эти вещи совпадают. Я использую Laravel 5.6 с самого начала этого проекта.






Убедитесь, что у вас все настроено правильно, в вашем kernel.php должны быть:
protected $routeMiddleware = [
...
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
...
];
Вам также необходимо убедиться, что у вас есть связующее ПО промежуточного слоя в ваших маршрутах:
Route::group(['middleware' => ['bindings'], function() {
// routes
}
Если это все еще не работает, я бы предпочел изучить явная привязка маршрута:
To register an explicit binding, use the router's model method to specify the class for a given parameter. You should define your explicit model bindings in the boot method of the RouteServiceProvider class:
public function boot()
{
parent::boot();
Route::model('filial', App\Filial::class);
}
Я думаю, что любой вариант подойдет, лично у меня просто большая часть моих маршрутов в группе, как в моем примере кода выше, но размещение его в $middlewareGroups кажется одинаково хорошим вариантом!
Привет, Алекс, с твоим советом я обнаружил проблему: в kernel.php промежуточное ПО «привязок» было к «api», но я использовал «auth: api», поэтому я добавил «api» к моим маршрутам. , однако IDK, будь то лучший способ сделать это, или добавить в kernel.php что-то вроде
'auth:api' => [ 'bindings', ],в $ middlewareGroups. Как вы думаете?