У меня есть модуль 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, или есть альтернативные идеи?
Я надеюсь, что это понятно, и спасибо за понимание!
В этом случае я собираюсь избегать использования ahah напрямую. есть ли у вас идея другого способа реализовать такую форму? – Soyoung