Jak zmienić moduł obsługi przesyłania formularzy?


16

Z jakiegoś powodu muszę zastąpić niektóre znaki (jeśli istnieją) w każdym polu tekstowym w dowolnej formie tuż przed zapisaniem ich w bazie danych. Innymi słowy, potrzebuję haka, w którym mógłbym uzyskać wszystkie przesłane dane i zastąpić ich znaki.
Znalazłem to rozwiązanie:

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

Ale to nie jest dobry pomysł, ponieważ muszę też zadbać o resztę postępu przesyłania. Muszę tylko wymienić niektóre postacie. Czy jest na to jakiś haczyk? Jakie są rozwiązania?

Odpowiedzi:


22

$form['#submit']przechowuje tablicę modułów obsługi formularza. Podanym kodem zastępujesz go, dodając tylko swój własny. Aby uzyskać pożądany wynik, należy dodać procedurę obsługi przesyłania jako pierwszy element w tablicy w następujący sposób:

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

Uzyskanie właściwych wartości we właściwych formach i zastąpienie niektórych znaków jest prawdopodobnie większym problemem samo w sobie. Możesz zawęzić zakres formularzy / pól, które musisz zmienić, aby upewnić się, że niczego nie zepsujesz.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.