CakePHP select valeur par défaut dans l'entrée SELECT
-
20-09-2019 - |
Question
Utilisation CakePHP:
J'ai une relation many-to-one, Feignons ses nombreux Leafs aux arbres. Bien sûr, je cuit un formulaire pour ajouter une feuille à un arbre, et vous pouvez spécifier quel arbre il est une zone de liste déroulante (tag) créé par l'assistant de formulaire.
La seule chose est, la case SELECT toujours par défaut Tree # 1, mais je voudrais à défaut de l'arbre, il est ajouté à:
Par exemple, appeler example.com/leaf/add/5
apporterait l'interface pour ajouter une nouvelle feuille Tree # 5. La zone de liste déroulante pour Leaf.tree_id
serait par défaut « Arbre 5 », au lieu de « Arbre 1 » que actuellement par défaut.
Que dois-je mettre dans mon contrôleur de feuilles et leur view/add.ctp
faire cela?
La solution
Vous ne devez jamais utiliser select()
ou text()
, ou radio()
etc .; il est terrible pratique. Vous devez utiliser input()
:
$form->input('tree_id', array('options' => $trees));
Ensuite, dans le contrôleur:
$this->data['Leaf']['tree_id'] = $id;
Autres conseils
CakePHP 1.3, l'utilisation 'default'=>value
pour sélectionner la valeur par défaut à une entrée de sélection:
$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3'));
le troisième paramètre doit être comme array ( 'choisi' => valeur)
$this->Form->input('Leaf.id', array(
'type'=>'select',
'label'=>'Leaf',
'options'=>$leafs,
'value'=>2
));
Cela permet de sélectionner la valeur de la deuxième position d'index par défaut de la liste des options dans leafs $.
En supposant que vous utilisez assistant formulaire pour générer la forme suivante:
select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)
Régler le troisième paramètre pour régler l'option sélectionnée.
version CakePHP> = 3.6
echo $this->Form->control('field_name', ['type' => 'select', 'options' => $departments, 'default' => 'your value']);
Pour faire un défaut de texte dans une zone de sélection utiliser la méthode $form->select()
. Voici comment vous le faites.
$options = array('m'=>'Male','f'=>'Female','n'=>'neutral');
$form->select('Model.name',$options,'f');
Le code ci-dessus sélectionnera Female
dans la zone de liste par défaut.
Gardez la cuisson ...
FormHelper::select(string $fieldName, array $options,
array $attributes)
$attributes['value']
pour définir quelle valeur doit être sélectionnée par défaut
<?php echo $this->Form->select('status', $list, array(
'empty' => false,
'value' => 1)
); ?>
Si vous utilisez la version 3.0 et CakePHP ci-dessus, vous pouvez ajouter de la valeur par défaut en entrée de sélection en utilisant l'attribut vide comme indiqué dans exemple ci-dessous.
echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);
La meilleure réponse à cette question pourrait être
Ne pas utiliser de sélection pour cette entrée d'utilisation du travail à la place
comme ceci
echo $this->Form->input('field_name', array(
'type' => 'select',
'options' => $options_arr,
'label' => 'label here',
'value' => $id, // default value
'escape' => false, // prevent HTML being automatically escaped
'error' => false,
'class' => 'form-control' // custom class you want to enter
));
it helps.