«добавить еще один элемент» в не-CCK Drupal формах - PullRequest
5 голосов
/ 03 декабря 2009

CCK для Drupal имеет удобную функцию, позволяющую одному полю CCK принимать несколько значений с помощью кнопки «добавить еще один элемент», что приводит к массиву данных в узле.

Мне интересно, есть ли какой-нибудь простой способ адаптировать это для не-CCK формы, которую я бы назвал по drupal_get_form. Я бы предпочел не изобретать колесо с помощью многоступенчатой ​​техники форм.

Кто-нибудь делал это?

Ответы [ 3 ]

6 голосов
/ 04 декабря 2009

Было бы неплохо, если бы они включили более сокращенный пример, но это Введение в AHAH в Drupal вместе с этот пост о добавлении динамических элементов формы с использованием AHAH должен охватывать довольно много всего, что вам нужно (что, к сожалению, совсем немного).

Способ, которым CCK делает это (в основном в content_add_more_js() в content.node_form.inc), немного более запутанный, поскольку им необходимо учитывать обобщение для различных типов полей, а также добавлять некоторые дополнительные элементы, чтобы учесть гладкая табличная сортировка Drag & Drop функциональность. Так что, если вам не нужно последнее, я бы не стал использовать его в качестве примера, так как это немного сбивает с толку;)

3 голосов
/ 08 июня 2010
2 голосов
/ 03 декабря 2009

Просто заглушка ответа, извините. Если никто не даст вам лучшего ответа, и у меня будет время, завтра я уточню немного подробнее.

Я полагаю, что функциональность достигается подключением поведения drupal (из стандартной библиотеки Js Drupal) к области, которую вы рассматриваете. Если я не прав, то это просто «специальная» функция jQuery.

Однако это самая легкая часть! ;) Сложность в том, что функциональность достигается с помощью AJAX, а не просто путем создания дополнительного поля формы на стороне клиента. Это связано с тем, что API формы должен полностью регенерировать форму, в противном случае - при отправке - дополнительные поля, которые изначально не отправляются в браузер, будут просто игнорироваться (это необходимо для предотвращения внедрения).

HTH хотя бы немного! Извините за то, что так лаконичен.

...