Partage
  • Partager sur Facebook
  • Partager sur Twitter

Laravel modifier infos utiliateurs

    29 novembre 2020 à 17:26:07

    Bonjour, je n'arrive pas à modifier les infos utilisateurs.

    Quand je clique sur le bouton de soumission rien ne se passe. Ni message d'erreur, ni modification dans la base de donnée

    le controlleur

        public function show()
        {
            $user = auth()->user();
            return view('user.account', ['user' => $user]);
        }
    
        /**
         * Show the form for editing the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function edit()
        {
            $user = auth()->user();
            return view('user.edit', compact('user'));
        }
    
        /**
         * Update the specified resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function update(Request $request)
        {
    
    
            $request->validate($request, [
                'prenom' => 'required|min:5',
                'nom' => 'required|min:5',
                'pseudo' => 'required|min:5',
                'email' => 'required|min:5',
            ]);
    
    
            $id = auth()->id();
            $user = User::find($id);
    
            $user->prenom = $request->input('prenom');
            $user->nom = $request->input('nom');
            $user->pseudo = $request->input('pseudo');
            $user->email = $request->input('prenom');
            // $user->update($request->all());
    
    
            return redirect()->route('user.account');
        }
    

    la route

    Route::get('/user/account', 'UserController@show')->name('user.account');
    
    Route::get('/user/edit', 'UserController@edit')->name('user.edit');
    
    Route::put('/user/edit', 'UserController@update')->name('user.update');
    


    le formulaire

    @extends('layouts.app')
    
    @section('content')
        <div class="container">
            <div class="row">
                <div class="col-6 offset-3">
                    <form action="{{ route('user.update', ['user' => $user->id]) }}" method="POST">
                        @method('PUT')
                        @csrf
                        <div class="form-group">
                            <label for="name">Prenom</label>
                            <input type="text" name="prenom" id="name" class="form-control" required value="{{ $user['prenom'] }}">
                        </div>
                        <div class="form-group">
                            <label for="name">Nom</label>
                            <input type="text" name="nom" id="name" class="form-control" required value="{{ $user['nom'] }}">
                        </div>
                        <div class="form-group">
                            <label for="name">Pseudo</label>
                            <input type="text" name="pseudo" id="name" class="form-control" required value="{{ $user['pseudo'] }}">
                        </div>
                        <div class="form-group">
                            <label for="mail">Email</label>
                            <input type="email" name="email" id="mail" class="form-control" required value="{{ $user['email'] }}">
                        </div>
                        <button type="submit" class="btn btn-primary">
                            {{ __('Edit') }}
                        </button>
    
                    </form>
                </div>
    
                <?php var_dump(auth()->id()); 
                
                
                ?>
            </div>
        </div>
    @endsection




    • Partager sur Facebook
    • Partager sur Twitter
      1 décembre 2020 à 23:03:22

      Bonjour,

      Dans le code que tu montres le update est commenté. Si ce n'est pas ça qui pose problème es tu sûr que tu passes bien dans le bon controller ?

      Pourquoi utiliser une méthode PUT et pas POST, c'est un formulaire pas une api ?

      Coté HTML, si je ne me trompe pas, le for du label est lié au name de l'input qui lui ai lié soit pour le premier tu devrais avoir for="prenom" et les id sont uniques je vois que as plusieurs id="name", si c'est pour un style fais en une classe.

      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2020 à 8:59:00

        Salut,

        Le soucis si le code passe bien dans l'action du controller c'est qu'il manque un save sur l'objet user.

        // $id = auth()->id();
        // $user = User::find($id);
        $user = auth()->user();
         
        $user->prenom = $request->input('prenom');
        $user->nom = $request->input('nom');
        $user->pseudo = $request->input('pseudo');
        $user->email = $request->input('prenom');
        $user->save();

        Hizu a écrit:

        Pourquoi utiliser une méthode PUT et pas POST, c'est un formulaire pas une api ?

        En fait c'est utile même dans du web pour différencier la création de l'update. Laravel préconise même si c'est du web

        Hizu a écrit:

        Coté HTML, si je ne me trompe pas, le for du label est lié au name de l'input qui lui ai lié soit pour le premier tu devrais avoir for="prenom" et les id sont uniques je vois que as plusieurs id="name", si c'est pour un style fais en une classe.

        Le for du label est lié à l'id et non au name, 2 possibilités :

        <!-- Version 1 -->
        <label for="id_input">Message</label>
        <input type="text" name="le_name" id="id_input">
        
        <!-- Version 2 -->
        <label>
          Message
          <input type="text" name="le_name">
        </label>
        • Partager sur Facebook
        • Partager sur Twitter

        Laravel modifier infos utiliateurs

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown