Laravel - Маршрут не определен - PullRequest
0 голосов
/ 04 мая 2018

У меня есть форма, которая использует пакет форм 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 не определен?

1 Ответ

0 голосов
/ 04 мая 2018

Попробуйте php artisan route:clear. Согласно документации php artisan route:cache создает файл кэшированных маршрутов, и каждый раз, когда вы добавляете новый, его необходимо обновлять. https://laravel.com/docs/5.6/controllers#route-caching

Я не знаю, является ли route: cache также сбрасывает кэшированные маршруты. Надеюсь маршрут: clear поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...