------ Plateforme Laravel 7x. --------

Je suis coincé dans un problème simple. Je ne trouve pas l'erreur. Pendant que je mets à jour un formulaire, il redirige vers une mauvaise URL dont je ne veux pas et les données ne se mettent pas à jour.

URL de l'action du formulaire:

 method="POST" action="{{'city/update/'. $editCity->id}}"

image du formulaire

Route:

Route::post('city/update/{id}','Admin\CityController@update');

route web

Fonction du contrôleur:

public function update(Request $request, $id)
    {
        $editCity=City::find($id);
        $editCity->city_name=$request->city_name;
        $editCity->save();
        return redirect()->back();
    }

fonction du contrôleur

Lorsque je clique sur la mise à jour, il accède à cette URL et affiche une erreur 404 que je ne veux pas: public/panel/city/edit/city/update/33

Aidez-moi à découvrir le problème où est l'erreur que j'ai commise. Je veux le mettre à jour lorsque je clique sur le bouton de mise à jour et que je reviens.

0
Tusher 19 mai 2020 à 19:16

3 réponses

Meilleure réponse

Utilisez plutôt le nom de route. Donc, votre code ressemblera à:

blade.php

method="POST" action="{{ route('city.update',  $editCity->id) }}"

web.php

Route::post('city/update/{id}','Admin\CityController@update')->name('city.update');
0
Talha F. 19 mai 2020 à 16:57

Si votre CityController est un contrôleur de ressources, voici ce que vous devriez essayer:

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!');
    }

J'espère que ça aide!

0
Fanhatcha Kone 19 mai 2020 à 16:41

Lors de la création de votre contrôleur, avez-vous exécuté une telle commande?:

php artisan make:controller Admin\CityController --resource

Vous devez créer le contrôleur en tant que contrôleur de ressources, puis le déclarer

Dans vos itinéraires comme ceci:

Route::resource('city', 'Admin\CityController');  

Ps: Assurez-vous de supprimer dans web.php, votre ancien itinéraire:

Route::post('city/update/{id}','Admin\CityController@update')->name('city.update');
0
Fanhatcha Kone 19 mai 2020 à 17:10