Маршрут приложений перенаправляет неправильный URL
------ Платформа Laravel 7x. --------
Я застрял в простой проблеме. Я не могу найти ошибку. Пока я обновляю форму, она перенаправляет на неправильный URL-адрес, который мне не нужен, и данные не обновляются.
URL действия формы:
method="POST" action="{{'city/update/'. $editCity->id}}"
Маршрут:
Route::post('city/update/{id}','Admin\CityController@update');
Функция от контроллера:
public function update(Request $request, $id)
{
$editCity=City::find($id);
$editCity->city_name=$request->city_name;
$editCity->save();
return redirect()->back();
}
Когда я нажимаю на обновление, он переходит к этому URL-адресу и показывает ошибку 404, которую я не хочу:public/panel/city/edit/city/update/33
Помогите мне разобраться в проблеме, в чем ошибка, которую я сделал. Я хочу, чтобы он обновлялся, когда нажимаю кнопку обновления и возвращаюсь обратно.
3 ответа
Вместо этого используйте name route. Итак, ваш код будет выглядеть так:
blade.php
method="POST" action="{{ route('city.update', $editCity->id) }}"
web.php
Route::post('city/update/{id}','Admin\CityController@update')->name('city.update');
Вы запускали такую команду при создании своего контроллера?:
php artisan make:controller Admin\CityController --resource
Вы должны создать контроллер как контроллер ресурсов, а затем объявить его
в ваших маршрутах вроде этого:
Route::resource('city', 'Admin\CityController');
Ps: Обязательно удалите в web.php ваш старый маршрут:
Route::post('city/update/{id}','Admin\CityController@update')->name('city.update');
Если ваш CityController является контроллером ресурсов, вам следует попробовать следующее:
Route: web.php
Route::resource('city', 'Admin\CityController');
Form: HTML
<form action="{{route('city.update',$editCity->id)}}" method="post">
Controller: CityController.php
public function update(Request $request, $id)
{
$editCity=City::find($id);
$editCity->city_name=$request->city_name;
$editCity->save();
return back()->with('success','city added successfully!');
}
Я надеюсь, что это помогает!