Autofill dei campi di una form

Eccomi di nuovo qua a proporvi un altro bel argomento di discussione

Questa volta si parla di form.

Sono ancora alle prime armi con Yii per cui mi stavo chiedendo qual’è il modo migliore per riempire i campi in una form. Mi spiego meglio. Sicuramente è capitato a tutti di dover riempire una campo con dei dati “derivati”. Un esempio classico è l’id di un utente. posso ad esempio assegnare ad un nuovo utente un id che è il primo intero disponibile tra gli id già presenti in tabella. Un altro esempio potrebbe essere un numero di commessa, ottenuto combinando un progressivo e le ultime 2 cifre dell’anno corrente.

Per fare questo nelle mie vecchie applicazioni scrivevo 2 righe di codice per fare delle chiamate ajax, con le quale avevo un controller che interrogava il db e tirava fuori il dato già pronto per essere inserito.

Dando un occhiata alla documentazione ho visto che le chiamate ajax sono perfettamente integrate in Yii. Ho fatto un pò di prove inserendo delle chiamate ajax in un campo di testo è la cosa funziona(l’url chiamato non è altro che una action del controller).

Questo approccio però fa abbastanza schifo perché funziona solo quando il campo di testo perde il focus. Io vorrei invece far partire la chiamata quando la pagina si carica. E questo è un modo, anche se non so se è il più pulito.

L’altro modo che mi è venuto in mente è quello di generare direttamente il dato nelle form passando attraverso l’uso del model e dell’ AR. Però immagino che così facendo si perderebbe la netta divisione MVC.

Voi che ne pensate?in che modo fate le vostre applicazioni?

Io ne penso che mentre mi trovo nel controller posso passare al view una variabile attraverso "render":


$this->render('pagina',array('nomevariabile'=>'valore'));

Nella view esisteerà la variabile $nomevariabile. Se per caso ti trovi dentro ad un form, potresti aver a che fare con renderPartial. La logica è la stessa: passi la variabile al render e l’avrai disponibile nella view “successiva”.

Grazie sensorario…in effetti è una soluzione decisamente comoda.

Mi permetto solo di fare un esempio in merito alla renderPartial che hai accennato in modo tale da evitare che qualcuno impazzisca :lol:

Praticamente se vogliamo passare un valore dal controller alla view.php va benissimo il codice che hai riportato nel tuo esempio.

Se invece,come nel mio caso,si vuole passare un valore alla _form.php per la creazione di un nuovo record è necessario aggiungere un altro pezzo di codice nella create.php




<?php echo $this->renderPartial('_form', array('model'=>$model,'nomeVariabile'=>$nomeVariabile)); ?>



Questo perché essendo presente questo codice di default




<?php echo $this->renderPartial('_form', array('model'=>$model,)); ?>



la renderPartial farebbe passare solo la variabile model

Trovate i dettagli dell’impazzimento di un altro utente qui

Aggiungo solo una cosa: quando qualcunos crive un contenuto "buono" clicca sul "+" che vedi in basso a destra di tutti i posts. Questo voto darà più reputazione alle persone. Al di la della raccolta punti, questo potrebbe incentivare la voglia di dare risposte migliori per avere punteggi migliori.

nooo…quindi vuol dire che fin’ora ho scritto cazzate :lol:

nessuno mi ha dato un mezzo voto… :unsure:

comunque hai perfettamente ragione…comincio subito