Select2.eselect2

Ciao a tutti,

ho ancora bisogno del vostro aiuto per un problema che ho da un po di giorni e non riesco a risolvere.

Vorrei utilizzare il widget in oggetto, spero che qualcuno lo conosca.

Ho creato la vista, di cui vi specifico solo la riga relativa al slect:




<div class="row">

		<?php echo $form->labelEx($modelInternicode,'Specifica un nuovo Elenco'); ?>

		<?php $data=CHtml::listData(Dispoutenti::model()->findAll(),'exten','nome');

				$this->widget('ext.select2.ESelect2',array(

  			'model' => $modelInternicode,

  			'attribute' => 'interno',

  			'data' => $data,

  			'options'=>array(

            'placeholder'=>'Seleziona utenti',

            'width' => '200px;',

        ),

    		'htmlOptions'=>array(

    				'multiple'=>'multiple',

  			),

			)); ?>

		<?php echo $form->error($modelInternicode,'interno'); ?>

	</div>



l’inserimento funziona correttamente, posso inserire valori multipli.

I problemi sono nel controller quando voglio prendere i valori inseriti.

Provo a stamparli in un file di log:




Yii::log('Array Interno indice:0 valore '.$_POST['Internicode']['interno'][0], 'trace', 'custom');

Yii::log('Array Interno indice:1  valore '.$_POST['Internicode']['interno'][1], 'trace', 'custom');



Il problema è che li recupera invertendo i valori, il primo che inserisco lo scrive nell’indice 1 ed il secondo nell’indice 0.

Qualcuno sa perchè?

grazie

Ciao,

l’outupt di una select multipla viene ordinato nel GET.

È possibile che il motivo sia questo?

Ti ringrazio tanto ma non ho capito cosa intendi… perdonami.

Comunque ho fatto altre verifiche inserendo più valori (non solo due ma 3 o 4) ed ho notato che l’ordine con cui restituisce il risultato è quello presente nel DB da cui prelevo i valori da mettere nella select…

ciò che intendevo dire è che nel get i valori della select non sono ordinati in base all’ordine in cui li hai selezionati ma (credo) in maniera alafabetica.

scrivo credo perché ho fatto delle prove con valori numerici, ma credo (appunto) che i valori alfanumerici si comportino allo stesso modo.

per il form uso CActiveForm con il metodo POST, dunque non dovrebbe centrare nulla GET o sbaglio?

inoltre sembra che non centra nulla l’ordine alfabetico perchè ritorna l’ordine che ho nel DB da dove prendo i valori della select con:

Dispoutenti::model()->findAll()

questa cosa non riesco a risolverla non ho più tempo, qualcuno mi sa suggerire un metodo alternativo (anche senza select2) per fare una select con la possiblità di scegliere valori multipli anche ripetuti?

grazie

Beh, se sai che i valori “arrivano” invertiti puoi gestirli in quanto tali. In seconda istanza, hai controllato il codice che viene generato dal widget? Voglio dire: se ti arrivano con valori che non ti aspetti, forse l’html del form è stato generato in un modo diverso da quello che credi.

nell’html è tutto corretto (la select con le relative opzioni). il widget select2 mi permette di selezionare anche valori multpli in qualsiasi ordine, il problema è che questo ordine non viene inviato al controller.

Come specificato prima i valori vengono restituiti rispettando l’ordine in cui sono presenti nel DB.

Non posso gestirli in quanto tali perchè io ho bisogno di utilizzare anche l’ordine usato, non solo cosa selezionato.

Avete idee per utilizzare un’altra strada?

Come ti dicevo l’ordine non viene rispettato, perché viene ordinato in base al valore.

Se vuoi gestire l’ordine potresti associare un evento alla selezione, aggiungendo il valore selezionato in un campo hidden

ho verificato, l’ordinamento viene fatto in base all’ordine che i dati hanno nel db da cui li prendo.

mi daresti uno spunto per capire come associare un evento alla selezione?

usando il widget select2? o altro modo?

vi ringrazio tanto

se non sbaglio select2 supporta l’opzione ‘formatSelection’, a cui puoi abbinare una funzione da far partire alla selezione.

Guarda la documentazione, per sicurezza.

hai perfettamente ragione per quanto riguarda l’ordinamento. non è alfabetico ma di presenza nella pagina :)

volevo solo chiudere il post per non lasciarlo a metà.

Nnn sono riuscito ad utilizzare select2, per ora ho usato un semplice campo di testo all’interno del quale faccio inserire tutti i valori che mi interessano rispettando il relativo ordine e poi prendo i valori analizzando la stringa.

grazie a tutti per l’aiuto, se in seguito faccio dei progressi con select2 magari posto la soluzione se a qualcuno interessa.