Laravel 5

Formulaire commun POST/PATCH

  • Avatar de macsime
    Membre depuis :
    27/01/2019
    Messages :
    4

    Hello,
    Je tente d'utiliser le meme formulaire pour l'ajout et l'edition de mes users.
    J'ai deux templates create.blade.php et edit.blade.php qui @include form.blade.php. Pour l'ajout tout est OK mais pour l'édition, je n'arrive pas à charger les données de l'user.

    Quelqu'un à t-il deja rencontre ce probleme ?
    Merci pour votre aide,

    <form action="{{ route('users.store') }}" method="POST">
    @include('pages.users.form')
    </form>
    <form action="{{ route('users.update', $user) }}">
    @method('patch')
    @include('pages.users.form')
    </form>
    @csrf
    <div class="form-group row">
    <label for="lastname" class="col-sm-3 col-form-label">{{ ('Lastname') }}</label>
    <div class="col-sm-9">
    <input type="text" class="form-control{{ $errors->has('lastname') ? ' is-invalid' : '' }}"
    id="lastname" name="lastname" value="{{ old('lastname') }}"
    placeholder="{{
    ('Lastname') }}"/>
    </div>
    </div>
    <div class="form-group row">
    <label for="firstname" class="col-sm-3 col-form-label">{{ ('Firstname') }}</label>
    <div class="col-sm-9">
    <input type="text" class="form-control{{ $errors->has('firstname') ? ' is-invalid' : '' }}"
    id="firstname" name="firstname" value="{{ old('firstname') }}"
    placeholder="{{
    ('Firstname') }}"/>
    </div>
    </div>
    <div class="form-group row">
    <label for="email" class="col-sm-3 col-form-label">{{ ('Email') }}</label>
    <div class="col-sm-9">
    <input type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}"
    id="email" name="email" value="{{ old('email') }}"
    placeholder="adresse@domaine.com"/>
    </div>
    </div>
    <div class="form-group row">
    <label for="password" class="col-sm-3 col-form-label">{{
    ('Password') }}</label>
    <div class="col-sm-9">
    <input type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}"
    id="password" name="password" placeholder="{{ ('Password') }}"/>
    </div>
    </div>
    <div class="form-group row">
    <label for="password-confirm"
    class="col-sm-3 col-form-label">{{
    ('Confirm Password') }}</label>
    <div class="col-sm-9">
    <input type="password" class="form-control{{ $errors->has('password-confirm') ? ' is-invalid' : '' }}"
    id="password-confirm" name="password_confirmation"
    placeholder="{{ __('Confirm Password') }}"/>
    </div>
    </div>
    /*
    Show the form for editing the specified resource.

    @param \App\Models\User $user
    @return \Illuminate\Http\Response
    /
    public function edit(\App\Models\User $user)
    {
    $roles = $this->getAllowedRoles();
    return view('pages.users.edit', compact('user', 'roles'));
    }
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2397

    Bonjour,

    Tu ne renseigne pas l'attribut value des input. l'helper old se contente de remplir le champ après une erreur de validation, pas au chargement initial. Il faut donc renseigner, par exemple si tu as une variable $user :

    value="{{ old($input['lastname'], isset($user) ? $user->lastname : '') }}"
  • Avatar de macsime
    Membre depuis :
    27/01/2019
    Messages :
    4

    Hello bestmomo,
    En effet, j'ai mal saisi le fonctionnement du old(). Merci beaucoup,
    Bon dimanche

Vous ne pouvez pas répondre à ce sujet.