Come posso modificare il gestore di invio del modulo?


16

Per qualche ragione ho bisogno di sostituire alcuni caratteri (se esistenti) in ogni singolo campo di testo in qualsiasi forma, proprio prima che vengano memorizzati nel database. In altre parole, ho bisogno di un hook in cui sia possibile ottenere tutti i dati inviati e sostituirne i caratteri.
Ho trovato questa soluzione:

function hook_form_alter($form, $form_state, $form_id) {
  $form['#submit'] = 'my_custom_submission_function';
}

Ma questa non è una buona idea poiché devo occuparmi anche del resto dei progressi della presentazione. Devo solo sostituire alcuni personaggi. C'è qualche gancio per farlo? Quali sono le soluzioni?

Risposte:


22

$form['#submit']memorizza un array di gestori di invio moduli. Con il codice fornito lo sovrascrivi aggiungendo solo il tuo. Per ottenere il risultato desiderato, è necessario aggiungere il gestore di invio come primo elemento dell'array in questo modo:

array_unshift($form['#submit'], 'mymodule_custom_submission');

Ottenere i giusti valori nelle forme giuste e sostituire alcuni caratteri è probabilmente un problema più grande in sé. Potresti voler restringere i moduli / campi che devi modificare per assicurarti di non rompere nulla.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.