Laravel France

Afficher les données qui ont été marquées dans un checkbox

  • Avatar de H_M
    Membre depuis :
    01/05/2018
    Messages :
    38

    Bonjour,

    J'ai un formulaire d'ajout d'un nouveau chauffeur où j'ai un checkbox pour marquer les types d'autocars que ce chauffeur peut conduire, j'ai réussi à les stocker dans la table :
    voici le code de ma vue :
    **

    <div class="col-md-6">
    <label for="Premium" class="col-md-4 col-form-label text-md-right">{{ ('Premium') }}</label>
    <input type="checkbox" name="activité[]" id="Premium"value="Premium"/><br>
    <label for="ConfortPlus" class="col-md-4 col-form-label text-md-right">{{ ('Confort Plus') }}</label>
    <input type="checkbox" name="activité[]" id="ConfortPlus" value="ConfortPlus"/><br>
    <label for="Confort" class="col-md-4 col-form-label text-md-right">{{ ('Confort') }}</label>
    <input type="checkbox" name="activité[]" id="Confort" value="Confort"/><br>
    <label for="Optimise" class="col-md-4 col-form-label text-md-right">{{ ('Optimise') }}</label>
    <input type="checkbox" name="activité[]" id="Optimise" value="Optimise"/><br>
    @if ($errors->has('activité'))
    <span class="invalid-feedback">
    <strong>{{ $errors->first('activité') }}</strong>
    </span>
    @endif
    </div>
    </div>**

    Et dans le controller :
    $act = implode(",", $request->get('activité'));
    $chauffeur->activité = $act;

    Jusque là tout fonctionne bien, mais j'ai une autre vue qui me permet de modifier un chauffeur là où j'ai trouvé du mal à afficher les cases cochés du checkbox pour ce chauffeur .
    Soucis n°2 : J'ai une troisième vue qui me permet d'afficher la fiche technique d'un chauffeur et je veux que dans cette fiche apparaisse les noms des cases qui ont été sélectionnées .

    Comment je peux faire pour régler ces 2 problèmes ?
    Merci d'avance

  • Avatar de MaitrePylos
    Membre depuis :
    27/05/2013
    Messages :
    230

    Bonjour, il faut faire le chemin inverse

    $chauffeur = Chauffeur::find($id);
    $chauffeur->activite = explode(',',$chauffeur->activite);

    Après, pour ne pas à avoir à faire cette manipulation, il faut utiliser les mutators dans le model.

    //model chauffeur

    public function setActiviteAttribute($value)
    {
    $this->attributes['activite'] = implode(",", $value);
    }

    public function getActiviteAttribute()
    {
    return explode(',',$this->attributes['activite']);

    }

    De cette façon cela se fera automatiquement.

  • Avatar de H_M
    Membre depuis :
    01/05/2018
    Messages :
    38

    Bonjour,
    Si je l'ai défini comme ça dans le model, comment je fais pour les afficher dans la page qui me permet de modifier les informations des chauffeurs , et meme celle qui affiche les informations de chaque chauffeur ?

  • Avatar de MaitrePylos
    Membre depuis :
    27/05/2013
    Messages :
    230

    Si vous utiliser HTML de LaravelCollective, cela se fera automatiquement.
    Sinon a vous de gérer votre tableau dans votre form :)

  • Avatar de H_M
    Membre depuis :
    01/05/2018
    Messages :
    38

    Bonsoir,
    J'utilise HTML de LaravelCollective, mais je ne sais pas comment afficher que les cases qui ont été cochées par l'utilisateur, dans la page update chauffeur, je veux voir les cases anciennement cochées.. Merci de me dire comment je peux faire pour arriver à ce résultat?

  • Avatar de H_M
    Membre depuis :
    01/05/2018
    Messages :
    38

    Voici mon code dans la vue de création d'un nouveau chauffeur :

    Activité :
    {{ Form::label('premium', 'Premium') }} {{ Form::checkbox('activité[]', 'premium')}}
    {{ Form::label('ConfortPlus', 'Confort Plus') }} {{ Form::checkbox('activité[]', 'ConfortPlus')}}
    {{ Form::label('Confort', 'Confort') }} {{ Form::checkbox('activité[]', 'Confort')}}
    {{ Form::label('Optimise', 'Optimise') }} {{ Form::checkbox('activité[]', 'Optimise')}}
    Dans la vue update chauffeur, je ne l'ai pas changé. et j'ai rajouté les méthodes que vous m'aviez donné dans le model chauffeur , mais quand je lance la modification d'un chauffeur , j'ai l'erreur suivante : ** Type error: Argument 4 passed to Collective\Html\FormBuilder::select() must be of the type array, string given, called in C:\laragon\www\project\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php on line 221 (View: C:\laragon\www\project\resources\views\Chauffeurs\updatechauf.blade.php)**
  • Avatar de F.M.
    Membre depuis :
    10/07/2017
    Messages :
    97

    Salut,

    Tu fais ça en dilletante ou c'est ton job (vraie question, si tu fais ça en dilletante tu nous fais perdre notre temps à tous) ?

    Si t'es un dev en devenir, premier conseil : apprends à dissocier la façon dont les données sont stockées et la façon dont elles sont saisies par l'utilisateur.

  • Avatar de H_M
    Membre depuis :
    01/05/2018
    Messages :
    38

    Salut,
    Je suis entrain de développer une application pour mon projet de fin d'études. C'est la première fois que je travaille avec le framework Laravel.
    Mais je comprends pas , comment je vous fais perdre votre temps? A ma connaissance c'est un endroit d'échanges si tu peux m'aider à débloquer la situation je te serai reconnaissante sinon vaut mieux se taire , je suis débutante et je suis censée faire une application qui n'est pas du tout facile.
    Merci pour votre compréhension.
    Et merci à toute personne qui essaye d'aider les autres et qui a le pouvoir de le faire.

  • Avatar de F.M.
    Membre depuis :
    10/07/2017
    Messages :
    97

    Si tu comprends pas le mot "dillettante" je peux rien pour toi ;)

  • Avatar de H_M
    Membre depuis :
    01/05/2018
    Messages :
    38

    Je comprends parfaitement le mot,
    Si t'as une solution pour mon problème vas-y ;)

  • Avatar de F.M.
    Membre depuis :
    10/07/2017
    Messages :
    97

    Je veux pas passer pour un méchant ou autre, mais de fin d'études de ?

Vous ne pouvez pas répondre à ce sujet.