Domanda

Utilizzando CakePHP:

Ho una relazione molti-a-uno, facciamo finta che sia molte foglie di alberi. Naturalmente, ho sfornato un modulo per aggiungere una foglia di un albero, ed è possibile specificare che si tratta di albero con una casella a discesa (tag) creato dal modulo helper.

L'unica cosa è, la casella di selezione sempre imposta Albero # 1, ma mi sarebbe piaciuto di default per l'albero che è stato aggiunto alla:

Per esempio, chiamando example.com/leaf/add/5 porterebbe l'interfaccia per aggiungere un nuovo foglio di albero # 5. La casella a discesa per Leaf.tree_id stabilizzerebbe a "Albero 5", invece di "Tree 1" che è attualmente in default.

Di cosa ho bisogno di mettere in mio controller Foglia e Foglia view/add.ctp per fare questo?

È stato utile?

Soluzione

Non si dovrebbe mai usare select(), o text(), o radio() ecc .; è terribile pratica. Si dovrebbe usare input():

$form->input('tree_id', array('options' => $trees));

Poi nel controller:

$this->data['Leaf']['tree_id'] = $id;

Altri suggerimenti

In CakePHP 1.3, uso 'default'=>value per selezionare il valore predefinito in un ingresso di selezione:

$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3'));

il terzo parametro dovrebbe essere come array ( 'selezionato' => valore)

 $this->Form->input('Leaf.id', array(
'type'=>'select',
'label'=>'Leaf',
'options'=>$leafs,
'value'=>2
));

Questo selezionerà valore di default seconda posizione indice dalla lista di opzione nel $ foglie.

Supponendo che si sta utilizzando modulo helper per generare il modulo:

select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)

Imposta il terzo parametro per impostare l'opzione selezionata.

Versione cakephp> = 3.6

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

Per fare un default il testo in una casella di selezione utilizzare il metodo $form->select(). Ecco come si fa.

$options = array('m'=>'Male','f'=>'Female','n'=>'neutral');

$form->select('Model.name',$options,'f');

Il codice sopra selezionerà Female nella casella di riepilogo per impostazione predefinita.

Tenere cottura ...

FormHelper::select(string $fieldName, array $options, 
array $attributes)

$attributes['value'] per impostare quale valore deve essere selezionata di default

<?php echo $this->Form->select('status', $list, array(
    'empty' => false, 
    'value' => 1)
); ?>

Se si sta utilizzando CakePHP versione 3.0 e superiori, quindi è possibile aggiungere valore predefinito nella selezione ingresso mediante l'attributo vuoto, come dato in seguito esempio.

echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);

La migliore risposta a questo potrebbe essere

Non utilizzare select per questo ingresso uso lavoro invece

come questo

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
        ));

Speranza che aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top