Como altero o manipulador de envio de formulários?


16

Por alguma razão, preciso substituir alguns caracteres (se existir) em todos os campos de texto de qualquer forma, logo antes de serem armazenados no banco de dados. Em outras palavras, eu preciso de um gancho no qual eu possa obter todos os dados enviados e substituir seus caracteres.
Encontrei esta solução:

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

Mas isso não é uma boa ideia, pois também tenho que cuidar do restante do andamento da submissão. Eu só preciso substituir alguns caracteres. Existe algum gancho para fazer isso? Quais são as soluções?

Respostas:


22

$form['#submit']armazena uma matriz de manipuladores de envio de formulários. Com o código que você forneceu, você o substituirá adicionando apenas o seu. Para obter o resultado desejado, você deve adicionar seu manipulador de envio como o primeiro elemento na matriz como este:

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

Obter os valores certos nas formas corretas e substituir alguns caracteres é provavelmente um problema maior por si só. Convém restringir os formulários / campos que você precisa alterar para garantir que você não quebre nada.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.