Làm thế nào để tôi thay đổi trình xử lý biểu mẫu?


16

Vì một số lý do, tôi cần thay thế một số ký tự (nếu tồn tại) trong mỗi trường văn bản dưới mọi hình thức ngay trước khi chúng được lưu trữ trong cơ sở dữ liệu. Nói cách khác, tôi cần một cái móc trong đó tôi có thể nhận được tất cả dữ liệu đã gửi và thay thế các ký tự của chúng.
Tôi tìm thấy giải pháp này:

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

Nhưng đây không phải là một ý tưởng tốt vì tôi cũng phải chăm sóc phần còn lại của tiến trình đệ trình. Tôi chỉ cần thay thế một số nhân vật. Có bất kỳ móc để làm điều này? Các giải pháp là gì?

Câu trả lời:


22

$form['#submit']lưu trữ một loạt các trình xử lý biểu mẫu. Với mã bạn đã cung cấp, bạn ghi đè lên nó bằng cách chỉ thêm mã của riêng bạn. Để có kết quả bạn muốn, bạn nên thêm trình xử lý trình của mình làm phần tử đầu tiên trong mảng như thế này:

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

Lấy đúng giá trị trong các biểu mẫu phù hợp và thay thế một số ký tự có lẽ là vấn đề lớn hơn. Bạn có thể muốn thu hẹp các biểu mẫu / trường bạn cần thay đổi để đảm bảo bạn không phá vỡ bất cứ điều gì.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.