CakePHP selezionare il valore predefinito in selezione ingresso
-
20-09-2019 - |
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?
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.