web-dev-qa-db-fra.com

Laravel case à cocher lame

Je veux définir l'état des cases à cocher à partir de la base de données, donc j'écris,

{{ Form::checkbox('asap', null, $offer->asap) }}

Mais si je veux mettre 'id' sur la case à cocher comme

{{ Form::checkbox('asap', null, $offer->ASAP, array('id'=>'asap')) }}

Il a toujours défini mon état de case à cocher sur true. (Avant que l'utilisateur ne le sélectionne)

Alors, demandez-vous comment définir "id" dans les cases à cocher de la lame lorsque l'état de la case à cocher est défini avant que l'utilisateur ne le sélectionne?

12
lggg3

Le troisième argument décide si la case est cochée ou non. Alors probablement $offer->ASAP (ou $offer->asap est vrai (ou non faux ou non nul). Si vous souhaitez désactiver la case à cocher, définissez-la sur false ou n'utilisez pas le troisième argument (défini sur null ou false):

{{ Form::checkbox('asap',null,null, array('id'=>'asap')) }}

MODIFIER

Une autre possibilité est que vous avez sur votre page du code JavaScript personnalisé qui trouve l'élément par asap id et coche cette case. Ainsi, lorsque vous ne définissez pas l'ID, JavaScript ne peut pas le vérifier, mais lorsque vous définissez cet ID, la case à cocher sera cochée par JavaScript.

6
Marcin Nabiałek

Je sais que cette question a été répondue auparavant, dans celle-ci, je vais expliquer étape par étape comment implémenter des cases à cocher avec Laravel/blade avec différents cas ...

Donc, pour charger vos cases à cocher à partir de la base de données ou pour tester si une case à cocher est cochée:

d'abord de tout ce dont vous avez besoin pour comprendre comment cela fonctionne, comme @itachi l'a mentionné:

{{Form :: case à cocher (1er argument, 2e argument, 3e argument, 4e argument)}}

  • Premier argument: nom
  • Deuxième argument: la valeur
  • Troisième argument: vérifié ou non, cela prend: true ou false
  • Quatrième argument: attributs supplémentaires (par exemple, case à cocher classe css)

Exemple:

{{ Form::checkbox('admin') }} 
//will produces the following HTML
<input name="admin" type="checkbox" value="1">

{{ Form::checkbox('admin', 'yes', true) }}
//will produces the following HTML
<input checked="checked" name="admin" type="checkbox" value="yes">

Comment obtenir les valeurs des cases à cocher? (dans votre contrôleur)

Méthode 1:

public function store(UserCreateRequest $request)
{

   $my_checkbox_value = $request['admin'];

  if($my_checkbox_value === 'yes')
     //checked
  else
     //unchecked
  ...
}

Méthode 2:

if (Input::get('admin') === 'yes') {
    // checked
} else {
    // unchecked
}

Remarque: vous devez attribuer une valeur par défaut à la case non cochée:

if(!$request->has('admin'))
{
    $request->merge(['admin' => 0]);
}

c'est Nice non? mais comment pourrions-nous définir des cases cochées à notre avis?

Pour une bonne pratique, je suggère d'utiliser Form::model lorsque vous créez votre formulaire, cela remplit automatiquement les valeurs d'entrée qui ont les mêmes noms que le modèle (ainsi que l'utilisation de différentes lames Form :: inputs ..)

{!! Form::model( $user, ['route' => ['user.update', $user->id], 'method' => 'put' ]) !!}
    {!! Form::checkbox('admin', 1, null) !!}
{!! Form::close() !!}

Vous pouvez également l'obtenir comme ceci:

{{ Form::checkbox('admin',null, $user->admin) }}

Okey maintenant comment gérer:

  • plusieurs cases à cocher
  • Ajouter une classe css
  • Ajouter un identifiant de case à cocher
  • Ajouter une étiquette

disons que nous voulons obtenir des jours ouvrables à partir de notre base de données Working days

$working_days = array( 0 => 'Mon', 1 => 'Tue', 2 => 'Wed', 
                       3 => 'Thu', 4 => 'Fri', 5 => 'Sat', 6 => 'Sun' );

@foreach ( $working_days as $i => $working_day )
{!! Form::checkbox( 'working_days[]', 
                  $working_day,
                  !in_array($working_days[$i],$saved_working_days),
                  ['class' => 'md-check', 'id' => $working_day] 
                  ) !!}
{!! Form::label($working_day,  $working_day) !!}
@endforeach
//$saved_working_days is an array of days (have 7 days, checked & unchecked)

J'ai passé du temps à comprendre comment gérer plusieurs cases à cocher, j'espère que cela peut aider quelqu'un :)

32

dans FormBuilder.php

    public function checkbox($name, $value = 1, $checked = null, $options = array())
{
    return $this->checkable('checkbox', $name, $value, $checked, $options);
}
  • 1er param: nom
  • 2e: valeur
  • 3e: vérifié ou non (c'est-à-dire nul, faux ou vrai)
  • 4ème: attributs.

{{ Form::checkbox('asap',null,$offer->ASAP, array('id'=>'asap')) }}

votre commande est erronée.

cA devrait etre,

{{ Form::checkbox('asap',$offer->ASAP, null, array('id'=>'asap')) }}
3
itachi