Modulo personalizzato
Ho un modulo personalizzato, in buildForm ho inserito alcuni campi, tra i quali un markup
$form['flussoAA'] = array( '#markup' => "AA <br>", );.
All'atto del submit mi effettua alcune operazioni di query e riempio una variabile dove inserisco dei dati.
Alla fine dell'elaborazione, all'interno della funzione submit, vorrei visualizzare il contenuto dellla variabile, nel campo flussoAA con questo codice
$form['flussoAA']['#value'] = $flusso ;
$form_state->setRebuild();
Ma il campo non viene aggiornato
Attualmente lo faccio utilizzando la proprietà messenger
Gaetano
Risposte
Prova a mettere nel
Prova a mettere nel submit
...
$storage = $form_state->getStorage();
$storage['flussoAA'] = $flusso;
$form_state->setStorage($storage);
...
e nel buildForm
...
$storage = $form_state->getStorage();
$form['flussoAA'] = array(
'#markup' => $storage['flussoAA'] ?? "AA
",
);
...
Maurizio grazie per la
Maurizio grazie per la risposta. Ho provato il codice e fa quello che pensavo di realizzare.
Se posso ti pongo qualche domanda per chiarimento
Se ho capito bene il valore della var $flusso viene salvato nel database col set e poi recuperato col get. Se così, mi conviene avere sempre la stessa variabile se dovessi utilizzarla in più occasioni per non aumentare la dimensione del database nel tempo. Il campo flusso resterà sempre memorizzato giusto?
Più volte ho sentito parlare di variabili di sessione che non dovrebbero essere salvate nel dataBase e non so quale delle 2 possa essere più utile per me.
Lo storage di questi dati è
Lo storage di questi dati è temporaneo e il sistema si occupa della gestione della cache dei form.
Il salvare o meno le informazioni dipende quindi dalla specifica necessità di farle persistere nel db e dalla loro struttura.
Se sono informazioni riutilizzabili e/o condivisibili per cui la computazione è particolarmente complessa puoi anche pensare di creare delle item direttamente nella cache di Drupal, in modo da controllarne la persistenza in termini di tempo e la gestione dell'invalidazione degli stessi (ad esempio tramite cache tags specifici).
Per il momento va bene
Per il momento va bene così.
Se l'esigenza dovesse cambiare, mi servirà capire come fare.
Grazie per il chiarimento