Hidden Input ?


(Joinsnow2018) #1

Salve a tutti,

Un input text hidden per essere letta durante un’operazione di submit

deve essere per forza dichiarata all’interno del modulo come una variabile ?

Deve per forza appartenere al Model ?

Grazie


(Bobonov) #2

Qui stiamo parlando di lato client e quindi html. In generale un campo per poter essere trasmesso in fase di submit deve essere incluso nel form di cui si fa submit.

Cosa cambia se è parte di un model?

cambia il modo in cui il campo viene nominato.

Se creo un form dal model Persona (sfruttanto yii2), l’html generato avra come nome dei campi Persona[nome] Persona[cognome] etc etc

Se aggiungo (lato yii o scrivendo direttamente html) un campo al form utilizzando un widget sganciato dal model, nell’HTML questo avra come nome quello che specifico nella configurazione del widget (nulla mi impedisce di dare come nome del campo un pattern compatibile con un model ie Persona[dataNascita]).

Nell’utilizzo lato server del post la differenza risiede nel fatto che se i nomi dei campi rispettano un determinato pattern, i valori possono essere caricati automaticamente nel model.




$model = new Persona();

if ($model->load(Yii::$app->request->post()) && $model->save() {

....



$model->load() carica $model i valori mappabili del post (o comunque di un array che ne rispetti il formato)

Questo evita di dover assegnare individualmente i valori alle proprietà del model.

Se il post contiene campi non mappabili, questi vengono ignorati.

Nulla toglie che se ho un form misto con campi "mappati" e campi "liberi" posso comunque gestirli.




$model->load(Yii::$app->request->post());

$model->dataNascita=Yii::$app->request->post('dataNascita');

$model->save();




(Account) #3

Per essere “letta” durante un’operazione di submit, deve essere all’interno dei tag <form></form> a cui il submit si riferisce