Utiliser CakePHP:
J'ai une relation plusieurs-à-un, supposons que ce soit beaucoup de Leafs to Trees. Bien sûr, j'ai créé un formulaire pour ajouter une feuille à un arbre et vous pouvez spécifier de quel arbre il s'agit à l'aide d'une liste déroulante (balise) créée par l'aide du formulaire.
Le seul problème est que la boîte de dialogue SELECT est toujours définie par défaut sur l’arbre n ° 1, mais je voudrais qu’elle soit définie par défaut sur l’arbre auquel elle est ajoutée:
Par exemple, appeler example.com/leaf/add/5
ferait apparaître l'interface permettant d'ajouter une nouvelle feuille à l'arbre n ° 5. La liste déroulante de Leaf.tree_id
prendrait par défaut "Tree 5", au lieu de "Tree 1" comme il le fait actuellement.
Que dois-je mettre dans mon contrôleur Leaf et dans ma feuille view/add.ctp
pour faire cela?
Vous ne devriez jamais utiliser select()
, ou text()
, ou radio()
etc. c'est une pratique terrible. Vous devriez utiliser input()
:
$form->input('tree_id', array('options' => $trees));
Puis dans le contrôleur:
$this->data['Leaf']['tree_id'] = $id;
Dans CakePHP 1.3, utilisez 'default'=>value
pour sélectionner la valeur par défaut dans 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 devrait être comme tableau ('selected' => valeur)
$this->Form->input('Leaf.id', array(
'type'=>'select',
'label'=>'Leaf',
'options'=>$leafs,
'value'=>2
));
Ceci sélectionnera la valeur par défaut de la deuxième position d’index dans la liste des options de $ leafs.
En supposant que vous utilisez formulaire pour générer le formulaire:
select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)
Définissez le troisième paramètre pour définir l'option sélectionnée.
La meilleure réponse à cela pourrait être
N'utilisez pas select pour cette tâche, utilisez plutôt l'entrée
comme ça
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
));
J'espère que ça aide.
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)
); ?>
Pour définir un texte par défaut dans une zone de sélection, utilisez 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.
Continuez la cuisson ...
Si vous utilisez cakephp version 3.0 et ultérieure, vous pouvez ajouter une valeur par défaut à l'entrée select en utilisant un attribut vide, comme indiqué dans l'exemple ci-dessous.
echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);
version de cakephp> = 3.6
echo $this->Form->control('field_name', ['type' => 'select', 'options' => $departments, 'default' => 'your value']);