Personalizza le preferenze di consenso

Utilizziamo i cookie per aiutarti a navigare in maniera efficiente e a svolgere determinate funzioni. Troverai informazioni dettagliate su tutti i cookie sotto ogni categoria di consensi sottostanti. I cookie categorizzatati come “Necessari” vengono memorizzati sul tuo browser in quanto essenziali per consentire le funzionalità di base del sito.... 

Sempre attivi

I cookie necessari sono fondamentali per le funzioni di base del sito Web e il sito Web non funzionerà nel modo previsto senza di essi. Questi cookie non memorizzano dati identificativi personali.

Nessun cookie da visualizzare.

I cookie funzionali aiutano a svolgere determinate funzionalità come la condivisione del contenuto del sito Web su piattaforme di social media, la raccolta di feedback e altre funzionalità di terze parti.

Nessun cookie da visualizzare.

I cookie analitici vengono utilizzati per comprendere come i visitatori interagiscono con il sito Web. Questi cookie aiutano a fornire informazioni sulle metriche di numero di visitatori, frequenza di rimbalzo, fonte di traffico, ecc.

Nessun cookie da visualizzare.

I cookie per le prestazioni vengono utilizzati per comprendere e analizzare gli indici di prestazione chiave del sito Web che aiutano a fornire ai visitatori un'esperienza utente migliore.

Nessun cookie da visualizzare.

I cookie pubblicitari vengono utilizzati per fornire ai visitatori annunci pubblicitari personalizzati in base alle pagine visitate in precedenza e per analizzare l'efficacia della campagna pubblicitaria.

Nessun cookie da visualizzare.

Yii Bootstrap: sostituire CJuiAutoComplete con TbTypeahead

da Ott 18, 2013Blog0 commenti

diff bootstrapAbbiamo di recente sostituito il template di un’applicazione da quello standard a quello fornito dall’estensione Yii Bootstrap, di migliore impatto e con funzionalità molto utili, oltre che accattivanti.

Tra i vari widget disponibili in Bootstrap c’è Typeahead, l’equivalente dell’autocompletamento in Yii. Nel caso l’elenco dei valori disponibili sia predeterminato e fisso la sostituzione è indolore, una leggera complessità si aggiunge nel caso i valori siano da reperire tramite un’azione esterna (ajax).

La sostituzione non è particolarmente difficile ma richiede alcune piccole modfiche al codice.

Partiamo dal widget esistente:

echo ‘<div class=”row”>’;
echo $form1->label($model,’codice_da’);
$this->widget(‘zii.widgets.jui.CJuiAutoComplete’,
  array(
    ‘model’=>$model,
    ‘attribute’=>’codice_da’,
    ‘source’=>$this->createUrl(‘card/autocompletaCard’),
    ‘options’=> array(
      ‘showAnim’=>’fold’,
    ),
    ‘htmlOptions’=>array (
      ‘style’=>’text-transform: uppercase’,
     ),
     ‘cssFile’=>false,
   )
);
echo $form1->error($model,’codice_da’);
echo “</div>”;

Come vediamo abbiamo un modello $model con attributo codice_da e l’autocompletamento viene fatto dall’azione autocompletaCard presente nel controller card. Questa funzione deve restituire i risultati in formato JSON.

 

Il nuovo widget sarà composto come segue:

echo $form1->label($model,’codice_da’);
$this->widget(‘bootstrap.widgets.TbTypeahead’,array(
  ‘model’=>$model,
  ‘attribute’=>’codice_da’,
  ‘options’=> array(
    ‘source’=>’js:function(query,process){
      $.ajax({
        url: “‘.$this->createUrl(‘card/autocompletaCard’).'”,
        type: “GET”,
        dataType:”json”,
        data: {term: query},
        success: process,
      });
    }’, 
  ),
  ‘htmlOptions’=>array (
    ‘style’=>’text-transform: uppercase’,
  ),
));
echo $form1->error($model,’codice_da’);

 

Come vediamo il widget è praticamente simile a quello dell’esempio fornito dalla documentazione dell’estensione, con la variante che il parametro source diventa una funzione anziché un semplice array. La chiave è la chiamata a process che passa il risultato della chiamata al widget per la creazione della tendina.

Per altre informazioni visitate la sezione del nostro blog.

CREATE YOUR PROJECT

Book a free consultation

Your business is constantly evolving. Tell us about the project you have in mind, whether it's an e-commerce website or a strategic business solution.