2010-08-02 1 views
0

У меня есть модуль CCK, который в настоящее время делает этоDrupal 6: форма ССК, который получает из WebService динамически

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

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

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

редактировать

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

Был обнаружен незаконный выбор. Пожалуйста свяжитесь с администратором сайта.

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

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

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

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

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

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

ответ

0

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 аха вызовы элементов, а с другой стороны, чтобы сделать Drupal принести AHAH и бежать это через CCK-API для изменения FORM, а затем Drupal визуализирует форму с помощью FAPI вне CCK (FAPI, это API формы).

+0

В этом случае я собираюсь избегать использования ahah напрямую. есть ли у вас идея другого способа реализовать такую ​​форму? – Soyoung

 Смежные вопросы

  • Нет связанных вопросов^_^