2012-04-20 14 views
12

ho una selezione ingresso multiple nel mio modulo di modifica: -CakePHP multipla Selezionare "selezionato" non sta funzionando

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array($selected))); ?> 

Quando eco-ed, la variabile $selected sarà simile a questa: -

"MySQL", "PHP" 

Tuttavia, l'input non seleziona automaticamente l'opzione corrispondente al tag.

Tuttavia, quando inserisco manualmente l'opzione selezionata, selezionerà automaticamente le due opzioni; per esempio.

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array("MySQL", "PHP"))); ?> 

Esiste comunque una soluzione? Grazie.

risposta

16

Ahh, ho ottenuto questo riparato.

Stavo guardando nella direzione sbagliata. Supponevo che i valori selezionati dovessero essere in forma di stringa con virgolette e virgola separate. (ad esempio "MySQL", "PHP", "jQuery").

Invece, dovrebbe essere in formato array senza virgolette e virgole. per esempio.

Array 
(
    [0] => MySQL 
    [1] => PHP 
    [2] => jQuery 
) 

Una volta risolto il problema, l'ho passato in vista; per esempio. $ this-> set ('selected', $ myArray);

Poi sul modulo, vorrei solo avere riecheggiare fuori in questo modo: -

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => $selected)); ?> 
0

php torta è totalmente basato sulla convenzione di denominazione e la matrice formattazione ..

cercare di fare in questo modo: -

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','selected' => $selected));?> 
+0

Ciao, Ho provato questo e non sembra funzionare. –

1

Usa parola chiave predefinita:

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','default' => $selected));?> 
1

Non c'è bisogno di fare attributo selezionato

Per es .:

nel controller:

$this->request->data = $this->Article->read(null, $id); 

$this->set(array(
     'centers' => $this->Center->find('list'), 
     'shopCategories' => $this->ShopCategory->find('list'), 
     'brands' => $this->Brand->find('list') 
    )); 

in vista:

echo $this->Form->input('Center', array('multiple' => 'multiple')); 

questo è tutto!

0

In CakePHP 3.x versione, è possibile impostare value preselezionare dalle liste

echo $this->Form->select(
    'Article.tags', 
    ['PHP','MySQL','jQuery','AJAX'], 
    [ 
     'multiple' => true, 
     'value' => ['MySQL','AJAX'] 
    ] 
); 

elementi HTML con valori MySQL e AJAX sarà reso come preselezionato

Problemi correlati