hook_form_FORM_ID_alter не вызывается после нажатия кнопки «Отправить» или «Предварительный просмотр» - PullRequest
0 голосов
/ 20 июля 2010

В пользовательском модуле у меня есть следующее (чтобы добавить javascript к определенной форме):

function mymodule_form_mynode_node_form_alter(&$form, $form_state) {
  drupal_add_js(drupal_get_path('module', 'mymodule') . '/js/mymodule.js', 'module');
}

Эта функция вызывается, форма загружается первой (т. Е. Перейдите к http://myserver.com/node/add/mynode), однако эта функция php не вызывается, когда та же форма перезагружается после того, как форма была признана недействительной (т.е. пропустила обязательное поле после нажав «Отправить» или «Предварительный просмотр»).

Что мне нужно сделать, чтобы добавить файл javascript после нажатия кнопки «Отправить» или «Предварительный просмотр»?

Спасибо

John

Ответы [ 2 ]

1 голос
/ 20 июля 2010

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

0 голосов
/ 25 июля 2010

Вы формируете alter, вызывается только тогда, когда форма строится.Поскольку формы кэшируются между запросами, при отправке и предварительном просмотре используется одна и та же и уже сформированная форма.

Вам необходимо быть уверенным, что ваш код вызывается каждый раз при визуализации формы.Как указывает googletorp, один из способов сделать это - использовать пользовательскую функцию рендеринга форм .Вы также можете сделать это, добавив post или pre-render к вашей форме.На самом деле, пользовательская, до или после рендеринга функция не обязательно должна быть для самой формы и может использоваться в любом элементе формы.Желательно тот, чье поведение изменено JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...