public function edit($id){ $user_id = auth()->user()->id; $user = User::find($user_id); return view("edit")->with('user'); }
3 Réponses :
Vous devez spécifier des paramètres dans l'itinéraire URL.
<form action="{{ route('update', [ 'id' =>$user->id])}}" method="post" style="border:1px solid #ccc">
J'ai fait les modifications maintenant qu'il montre que la page ne peut pas être trouvée.
@MAMADOUBELLADIALLO Vérifiez si $ utilisateur-> id code> a la valeur correcte
@MAMADOUBELLADIALLO, Run PHP Artisan Itinéraire: Liste Code> Dans Terminal et vérifiez les itinéraires. Ensuite, prenez la page que vous recevez la page non trouvée, vérifiez son URL et essayez de trouver l'URL correspondant à partir de la commande
itinéraire: liste code>. Vous pouvez voir s'il y a des erreurs dans l'URL de cette façon
Peut-être que c'est parce que vous n'avez pas le champ CSRF dans votre formulaire. Ajoutez cette entrée cachée dans votre formulaire.
<form action='{{ url("update/$user->id") }}' method='post'> <input type="hidden" name="_token" id="csrf-token" value="{{ Session::token() }}" /> . . . <!--the rest of your form--> </form>
Maintenant, il montre que la page n'a pas pu être trouvée.
Vérifiez votre contrôleur :).
Je l'ai vérifié. Je l'ai mis pour rediriger vers la page d'accueil
// Edit link <a href="{{ route('admin.tag.edit',$tag->id) }}" class="btn btn-info waves-effect"> <i class="material-icons">edit</i> </a> // blade file <form method="POST" action="{{ route('admin.tag.update',$tag->id) }}"> @csrf @method('PUT') <div class="form-group form-float"> <div class="form-line"> <input value="{{ old('name') }}{{ $tag->name }}" name="name" type="text" class="form-control"> <label class="form-label">{{ __('Name') }}</label> </div> </div> <br> <a href="{{ route('admin.tag.index') }}" class="btn btn-danger m-t-15 waves-effect">{{ __('BACK') }}</a> <button type="submit" class="btn btn-primary m-t-15 waves-effect">{{ __('SUBMIT') }}</button> </form> // Route Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'Admin','middleware'=>['auth','admin']], function (){ Route::resource('tag','TagController'); }); // Controller public function edit($id) { $tag = Tag::find($id); return view('admin.tag.edit',compact('tag')); } public function update(Request $request, $id) { $this->validate($request,[ 'name' => 'required' ]); $tag = Tag::find($id); $tag->name = $request->name; $tag->slug = str_slug($request->name); $tag->save(); Toastr::success('Tag Successfully Updated','Success'); return redirect()->route('admin.tag.index'); }
Il montre trop peu d'arguments pour fonctionner application \ http \ contrôleurs \ homecontroller :: update (), 1 passède et exactement 2 attendu
Vous n'avez pas besoin
méthod_field code> pour la poste normale. Il est utilisé pour les demandes de patch et de suppression. Supprimez le champ Méthode ou utilisez plutôt les demandes de correctifs (et utilisez
méthod_field ('patch') code>
Ok je vois mais c'est toujours une méthode de montrage non autorisée.
Vous avez un problème avec
itinéraire () code> méthode d'assistance. Découvrez le doc: laravel.com/docs/5.7/helpers#method-Route - a>
Je vous recommanderais également de regarder Didacticiel CRUD Laravel 5.6 Utilisation du contrôleur de ressources . Utiliser des ressources rend les choses beaucoup plus faciles