Laravel - Форма редактирования пользователя не ссылается на контроллер - PullRequest
0 голосов
/ 21 сентября 2019

ОБНОВЛЕНИЕ: Я думаю, что проблема определенно связана с методом POST.Я перефразировал свой вопрос и дал полный код в новой теме здесь stackoverflow.com / questions / 58043675 / form-method-post-action

Я создаю страницу для пользователейчтобы обновить их настройки (settings.blade.php), он хранится в папке user_admin, поэтому правильный путь - user_admin/settings.blade.php.

Вот мой SettingsController.php

public function edit()

{
 $user = auth()->user();
return view('user_admin.settings', compact('user'));
}

А здесьвот как я пытаюсь связать с ним;

<form method="POST" action="{{ route('user_admin/settings.edit', $settings->id)}}" enctype="multipart/form-data">
@csrf

Я получаю ошибку:

'Неопределенная переменная'

Я такжепробовал {{ route('settings') }}, но я получаю ошибку:

'Маршрут [настройки] не определен.'

Вот форма ввода в моей форме, которую пользователи редактируют:

 <label for="first_name" class="col-md-4 col-form-label text-md-right">{{ __('First Name') }}</label>

Плюс, на панели пользователя у меня есть ссылка на «настройки», которая равна {{ route('user_admin/settings.edit')}}.Проблема в том, что панель не открывается из-за ошибки

Маршрут [user_admin / settings.edit] не определен

Вот мои маршруты:

Route::get('settings', 'SettingsController@edit');
Route::post('settings/update', 'SettingsController@update');

END

Все, что ниже этой строки, является моим ответом на конкретные комментарии.

@ Рашед Хасан

|        | POST      | password/email             | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web,guest                                       |
|        | GET|HEAD  | password/reset             | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest                                       |
|        | POST      | password/reset             | password.update  | App\Http\Controllers\Auth\ResetPasswordController@reset                | web,guest                                       |
|        | GET|HEAD  | password/reset/{token}     | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest                                       |
|        | GET|HEAD  | pricing                    |                  | Closure                                                                | web                                             |
|        | GET|HEAD  | register                   | register         | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest                                       |
|        | POST      | register                   |                  | App\Http\Controllers\Auth\RegisterController@register                  | web,guest                                       |
|        | GET|HEAD  | settings                   |                  | App\Http\Controllers\SettingsController@edit                           | web                                             |
|        | POST      | settings/update            |                  | App\Http\Controllers\SettingsController@update                         | web                                             |
|        | GET|HEAD  | uli_groups_created         |                  | Closure                                                                | web                                             |
|        | GET|HEAD  | uli_groups_joined          |                  | Closure                                                                | web                                             |
|        | GET|HEAD  | upload_profile_image       |                  | Closure                                                                | web                                             |
|        | GET|HEAD  | welcome                    |                  | Closure                                                                | web                                             |
+--------+-----------+----------------------------+------------------+------------------------------------------------------------------------+-------------------------------------------------+

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Прежде всего, вы должны дать имя каждому маршруту, например,

Route::get('settings', 'SettingsController@edit')->name('settings');
Route::post('settings/update', 'SettingsController@update')->name('settings_update');

Таким образом, вы можете уникально идентифицировать каждый маршрут

Теперь, что вы сделали в коде ниже:

<form
  method="POST"
  action="{{ route('user_admin/settings.edit', $settings->id)}}"
  enctype="multipart/form-data"
>

Вы передали идентификатор с маршрутом, но с параметром не определен маршрут, см. Код ниже: Маршрут:

Route::get('user/{id}/profile','ProfileController@profile')->name('profile');

Внутри блейд-файла:

<form 
  method="POST" 
  action="{{route('profile', ['id' => 1])}}"
  enctype="multipart/form-data"
>

Таким образом, в основном в функции route() первый аргумент должен содержать имя маршрута, а второй аргумент - передать массив со списком параметров, которые вы определили в файле маршрута, с указанием конкретного маршрута, который будет использоваться.

Дай мне знать, если тебе все еще нужна моя помощь.

0 голосов
/ 22 сентября 2019

правильная ссылка была {{route ('settings.update')}}}

Проблема возникла из-за предыдущего изменения имени пользователя, мы добавили user first_name и last_name в форму регистрации, котораяозначало, что «имя» не было признано.После обновления ссылок, чтобы они указывали на first_name и last_name, и добавления вышеуказанной ссылки, все работало нормально.

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