web-dev-qa-db-fra.com

CakePHP sélectionne la valeur par défaut dans l'entrée SELECT

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?

15
erjiang

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;
20
Miles Johnson

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'));
50
Ryan

le troisième paramètre devrait être comme tableau ('selected' => valeur)

8
Renjith Chacko
 $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.

8
Sadikhasan

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.

1
Funky Dude

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.

0
M.suleman Khan
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)
); ?>
0
Zimmo

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 ...

0
Haroon

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']);
0
rakeysharyal

version de cakephp> = 3.6

echo $this->Form->control('field_name', ['type' => 'select', 'options' => $departments, 'default' => 'your value']);
0
Yasin