Маршрут приложений перенаправляет неправильный 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!');
    }

Я надеюсь, что это помогает!

Другие вопросы по тегам