Сохранить данные Drupal hook_form_alter

Я добавил поле к узлу, используя hook_form_alter, и я вижу его нормально, но теперь я, конечно, хотел бы, чтобы данные, введенные в это поле, также сохранялись. Что я должен сделать, чтобы это произошло?


person dazz    schedule 29.08.2011    source источник


Ответы (1)


Когда вы изменяете форму, вам также необходимо добавить в модуль обработчик отправки формы; таким образом, ваш модуль будет вызываться при отправке формы, и вы сможете сохранить значение добавленного вами поля.

Если есть более одной кнопки, то предпочтительнее добавить обработчик отправки к конкретной кнопке, с которой вам нужно действовать. Предположим, например, что форма имеет две кнопки отправки: «Сохранить» и «Удалить»; если вы добавите обработчик отправки с помощью $form[#submit][] = "my module_form_submit";, то обработчик отправки будет вызываться даже при нажатии кнопки «Удалить».

Как сообщается в кнопки формы могут определять собственные обработчики #submit и #validate:

Все формы могут иметь свойства «#validate» и «#submit», содержащие списки обработчиков проверки и отправки, которые должны выполняться, когда пользователь отправляет данные. Ранее, если в форме было несколько кнопок отправки для инициирования различных действий (например, обновление записи или удаление), необходимо было проверить входящий $form_values['op'] на наличие имени нажатой кнопки, а затем выполнить другой код. исходя из его стоимости.

Теперь при желании можно определить свойства #validate и #submit для каждой отдельной кнопки формы.

Когда для отправки формы используется определенная кнопка, будут использоваться ее обработчики проверки и отправки, а не обработчики уровня формы по умолчанию. Если на уровне кнопки ничего не указано, вместо этого будут использоваться обработчики уровня формы.

Кроме того, Элемент 'op' в значениях формы устарел, и на него нельзя полагаться:

Как обсуждалось выше, каждая кнопка может иметь связанные с ней функции «#validate» и «#submit». Таким образом, должна быть одна кнопка, которая отправляет форму и вызывает обычные обработчики $form_id_validate и $form_id_submit. Любые дополнительные кнопки, которые должны вызывать другие функции проверки или отправки, должны иметь функции, специфичные для кнопок. Также обратите внимание, что элемент 'op' в значениях формы, соответствующий нажатой кнопке, когда их несколько в форме в Drupal 5.x, больше не следует полагаться и может отсутствовать.

person apaderno    schedule 29.08.2011