У меня есть форма, которая использует пакет форм Laravel, заголовок этой формы выглядит так:
{{ Form::model($user, array('route' => array('users.update', $user->username), 'method' => 'PUT')) }}
Эта форма находится внутри лезвия редактирования в views/users/edit.blade.php
Насколько мне известно 'route' => array('users.update', $user->$username)
делает следующее:
находит маршрут с именем users.update
и добавляет имя пользователя в качестве параметра.
Внутри routes/web.php
У меня есть это:
Route::post('/users/{user}', 'UsersController@update')->name('users.update');
Учитывая это, я предполагаю следующее:
Форма отправляется на указанный маршрут и преобразует его в www.example.com/users/username
Однако, когда я перехожу на страницу редактирования, на которой есть форма обновления, я получаю:
"Route [users.update] not defined. (View: C:\xampp\htdocs\my-newable\resources\views\users\edit.blade.php)"
Даже странно, что когда я запускаю php artisan route:list
, рассматриваемый маршрут даже не отображается как маршрут, который вы можете использовать в приложении.
Я также попробовал следующую команду: php artisan route:cache
Но оно все еще не появляется?
Наконец, это метод обновления с UsersController
public function update(Request $request, User $user)
{
$user = User::findOrFail($user)->first();
//Validate name, email and password fields
$this->validate($request, [
]);
$roles = $request['roles']; //Retreive all roles
if (isset($roles))
{
$user->roles()->sync($roles); //If one or more role is selected associate user to roles
}
else
{
$user->roles()->detach(); //If no role is selected remove exisiting role associated to a user
}
return redirect()->route('users.index')->with('flash_message', 'User successfully edited.');
}
Я просто не вижу, как метод users.update
не определен?