Проблемы в hook_form_submit () в браузере IE - PullRequest
1 голос
/ 29 октября 2010

У меня есть пользовательский модуль с формой Я реализовал формы хуков, как это

hook_form()
hook_form_submit($form, &$form_state)

Когда у меня есть оператор печати в _submit, он не отображается на экране, но он прекрасно работает в Mozilla Firefox. В IE _submit только не вызывается, я использую drupal_render для визуализации каждого элемента формы по отдельности

Edit:

<?php echo drupal_render($form['form field']);?>

Я рендерил форму в этом методе, изначально не мог отправить формы в ff и прочитал некоторые, где добавить эти строки

<?php print drupal_render($form['form_build_id']); print drupal_render($form['form_id']); print drupal_render($form['form_token']); ?> Поэтому я добавил их вслепую, потом это работает в ff, а не в IE

Ответы [ 3 ]

1 голос
/ 29 октября 2010

Браузеры не влияют на то, какой код и функции выполняются на вашем сервере.Он только делает запрос, то, что произойдет после этого, будет таким же.

Может отличаться только то, как они отображают страницу.Поскольку функции отправки выполняются до отображения страницы, распечатанная разметка будет напечатана до создания HTML-документа.Скорее всего, именно поэтому вы видите разные результаты, вы создаете недопустимую разметку.

Попробуйте посмотреть исходный код и сравнить, я уверен, что они одинаковы.

0 голосов
/ 02 ноября 2010

Необходимо увидеть функцию формы, форму проверки, отправки, предварительного рендеринга, после сборки, функции темы (шаблон + препроцесс), чтобы определить, в чем проблема.

0 голосов
/ 30 октября 2010

Я рекомендую вам использовать модуль Devel при отладке подобных вещей.Как только модуль будет включен, включите блок разработки.На странице конфигурации модуля включите параметр «Отображать страницу перенаправления», который позволит вам перехватить страницу отправки формы, прежде чем API перенаправит вас в другое место.

Кроме того, я бы посоветовал не беспокоиться о drupal_render и простотестирование с диагностическим отпечатком.Вместо простых print() утверждений рекомендуется использовать dpm() функцию Devel во время отладки.

Вы также можете проверить, что происходит в hook_validate(), прежде чем достигнуть hook_submit().

...