Я занимаюсь разработкой приложения Laravel.Я делаю привязку модели маршрута в промежуточном программном обеспечении.
У меня есть такие маршруты
Route::group([ 'prefix' => 'department/{department}', 'middleware' => [ 'auth.department' ] ], function () {
Route::post('employee/create', 'EmployeeController@store')->name('employees.store');
});
Это мое промежуточное ПО auth.department (AuthDepartment)
class AuthDepartment
{
public function handle($request, Closure $next)
{
$department = Department::find($request->department);
//do something with the department
//I want to set the $department (Department model) in the place of {department} in the route.
return $next($request);
}
}
Это EmployeeController
class EmployeeController extends Controller {
public function store($department)
{
}
}
Как вы можете видеть в коде, я использую параметр $ Department для получения идентификатора отдела из маршрута.Но вместо того, чтобы получить целое число в качестве параметра, я хочу связать модель следующим образом.
class EmployeeController extends Controller {
public function store(Department $department)
{
}
}
С моим текущим кодом это не работает.Я попытался установить параметр маршрута в промежуточном программном обеспечении следующим образом, чтобы сопоставить (связать модель) значение в действии.
$request->route()->setParameter('department', $department)
Но он просто не работает.Как я могу установить / заменить параметр маршрута моделью в промежуточном программном обеспечении, которую можно связать с параметром в действии контроллера?Является ли это возможным?Какой может быть лучший подход?
Если бы я использовал
$request->route()->setParameter('department', $department)
, чтобы установить параметр, я не могу установить тип в действии контроллера, как это.
store(Department $department)
Но это нормально
store(Department $department)
Но я хочу это
store(Department $department)