Работа в формах с #AHAH

Главные вкладки

Аватар пользователя Dobryak Dobryak 27 апреля 2008 в 21:22

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

Итак, к чему это я все.

В свое время тренировался на друпале в плане его освоения, ну и как удобный пример для себя выбрал тему каталога фирм.
Начинал освоение с 5-й ветки, совсем недавно решил переместить это все на 6-ю. И столкнулся с проблемой.

Когда забиваешь фирму (в качестве нода в каталог) у нее выбираешь из селектов 3-и вещи
1) Страна
2) Город
3) Улица

все это находится в предварительно подготовленных таблицах.

Выбираем 1-н селект, яваскриптом выводится второй, яваскриптом выводится третий.
Причем изначально улицы не были забиты в селект.. и чтоб пройти валидацию ставил '#DANGEROUS_SKIP_CHECK' => TRUE, чтоб он не проверял заданые значения в качестве опций, это я уже потом делал в форм валидейт, в шестой версии любители этой функции сваяли какой-то патч. Но интересует без внесения изменений создание того-же самого.

Дык вот.. в шестой версии это убрали предложили пользоваться AHAH'ом.. кто нибудь разбирался с этим зверем?

В данный момент как раз застопорился на том что в правильном порядке при добавлении фирмы надо выбирать страну город... но при отправке формы ругается на то что значения не были изначально забиты в опции. Можно конечно забить все города, все улицы прям при формировании формы.. и потом при загрузке страницы отсеч ненужное... но это избыток данных.

Есть какое нибудь предположение или решение? Smile
Если что могу примерно продемонстрировать о чем я говорю... вернее в чем у меня косяк.

Комментарии

Аватар пользователя vikeng vikeng 6 июля 2008 в 14:03

Сам с похожей задачей мучаюсь. Тоже select, но не города. Сначала хотел делать с помощью jQuery, сегодня обнаружил, что есть #ahah. Думаю с помощью него делать.

Если что получится - напишу.

Аватар пользователя andypost@drupal.org andypost@drupal.org 6 июля 2008 в 18:59

Отличие 6й версии от 5й в том, что формы кешируются, а при использовании ahah нужно перестраивать форму - тогда данные будут сохраняться и проходить валидаторы.
Рекомендую очень внимательно начать читать отсюда http://drupal.org/node/144132#form-state

Аватар пользователя gor gor 7 июля 2008 в 9:24

работает отлично. Я за счет ahah подгружаю нужные мне данные в форму.
в вашем случае я так понял есть 3 селекта. при зимененнии в первом, во второй загружаются данные. при изменении во втором - в третий.

в ahah есть path указываете его на путь, который обрабатываете через меню
например:

'path' => 'mymodule/select_js'

в меню добавляете

$items => array ( 'path' => 'mymodule/select_js' ..........

и callback'ом возвращаете елемент отрендереной формы через drupal_json.

Данные, что будут вернуты обработкой - будут вствлены в елемент div с id, который вы укажете в 'wrapper' элемента ahah.

Аватар пользователя vikeng vikeng 7 июля 2008 в 16:07

Сделал модуль, в котором есть форма с такими списками.

Кроме документации, в качестве примера для подражания, использовал стандартный модуль голосования.