Drupal 6: cck форма, которая динамически выбирается из веб-сервиса - PullRequest
0 голосов
/ 02 августа 2010

У меня есть модуль cck, который в настоящее время делает это

  • Пользователь вводит и сохраняет имя пользователя для стороннего веб-сайта на странице настроек модуля
  • Пользователь добавляет / редактирует узел
  • Когда пользователь получает форму добавления / редактирования, его имя пользователя выбирается из настроек и используется для вызова API, который выбирает некоторые данные, эти данные заполняют выбор в форме.
  • Пользователь выбирает что-тоиз заполненных данных выберите, и при сохранении узел будет создан с пользовательским содержимым.

Это работает, но я бы хотел, чтобы это можно было сделать

  • Пользователь добавляет / редактирует узел, отображается форма, и некоторые данные по умолчанию заполняют выбор, указанный выше
  • Пользователь вводит свое имя пользователя в текстовое поле на форме, нажимает кнопку, которая запускает вызов API, и выборзаполняется данными, полученными из вызова API
  • Пользователь выбирает что-то из данных, заполненных select, и при сохранении узел создается с пользовательским содержимым.

edit

Я попытаюсь сделать это с помощью javascript вместо того, чтобы ахах позаботился обо мне.Таким образом, когда кнопка нажата, вызов API все еще выполняется, но теперь изменение элементов select полностью выполняется с помощью манипуляций ajax и dom.Однако, когда эта форма отправлена, я получаю эту дружественную ошибку.

Обнаружен неправильный выбор.Пожалуйста, свяжитесь с администратором сайта.

и, насколько я понимаю, это вызвано тем, что form_state отличается от того, что хранится в форме (мой измененный список выбора).

У меня естьНесколько идей о том, как обойти эту ошибку, но я хотел бы знать, есть ли у кого-то другое представление о том, как это сделать.

Я играл с AHAH, чтобы заставить это работать, но это было сложно, так как я не могу найти никаких примеров, похожих на то, что я пытаюсь сделать, или каких-либо объяснений того, как использовать AHAH с CCK.У меня есть обратный вызов AHAH, настроенный таким образом в обратном вызове hook_process hook_elements, и обратный вызов выполняется, но я думаю, что есть несоответствие в том, что находится в кэшированном form_state и что отображается на экране, потому что при сохранении / предварительном просмотре узла, естьне отображается ничего, кроме меню и навигации.Я получил правильную информацию для отображения в веб-форме, но при отправке это не удается.

Я также немного растерялся относительно правильного способа заставить AHAH работать с CCK и именно то, что я 'Я должен вернуться и сделать.(вернуть восстановленную часть формы? что я кеширую? и т. д.)

Таким образом, у кого-нибудь есть предложения о том, как работает обратный вызов ahah, известны примеры работы ahah с веб-сервисами и / илиcck, или есть альтернативные идеи?

Надеюсь, это понятно, и спасибо за понимание!

1 Ответ

0 голосов
/ 02 августа 2010

Drupal Pro Development имеет отличную главу по AHAH. Бесплатный ресурс: DrupalSN .

Однако через CCK все станет немного сложнее.

ClientJs -> Drupal-GET -> remoteserver XML/Json/? -> Drupal -> FAPI -> Json/HTML -> Client

- это обычный стек вызовов для AHAH. На самом деле AHAH неправильно назван в Drupal, поскольку он работает только через FAPI.

Вы бы смотрели на что-то вроде:

CCK -> FAPI -renders-> ClientJS -> Drupal-GET -> remoteserver XML/Json/? -> Drupal -> CCK-hooks(s) -> FAPI -> Client.

Сложная часть заключается в использовании CCK-api для добавления вызовов JS aha к элементам и на другой стороне, чтобы Drupal извлекал AHAH и запускал его через CCK-API для изменения ФОРМЫ, а не Drupal отображает форму с FAPI за пределами CCK (FAPI, это API формы).

...