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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top