В хуке form создаю ahah переключатель (radios) на который навешиваю ahah
function mymodule_form
($node,
&$form_state) {
$form['category_select'] =
array(
'#type' =
> 'radios',
'#required' =
>TRUE,
'#options' =
> array('1'=
>'option1',
'2'=
>'option2'),
'#ahah' =
> array(
'event' =
> 'click',
'path'=
>'switch_category',
'wrapper' =
> 'category_test',
'method' =
> 'replace',
),
);
}
В обработчике пытаюсь получить и вывести из $_POST значение этой переменной - оно пустое.
$_POST['category_select']
Тот же самый код, но в отдельной функции построителе работает.
Может
Комментарии
есть модуль example
посмотрите в нем как реализованны примера с ахах.
через пост принимать данные - это не правильно.
с вашей ошибкой сталкивался. там все работает. только по другому логика работы впринципе.
но рекомендую посомтреть модуль с примерами. избавит от очень многих проблем, и меня от писанины сейчас (честно говоря могу расписать ваш пример с комментами, но тупо нет времени, или в личку - вечером или завтра отпишу). И заодно поднимете скилл.
Если в кратце. при генерации формы и дальшейшей ее обработки срабатывает проверка на изменение формы.
в вашем случае анан ее и меняет. странно что у вас не вылезла ошибка рода "произошла обишка, обратитесь к администратору".
что бы этого избежать, вам нужно написать коллбек на фунцию обработки ахах + так называемую футнцию хелпера, которая будет перегенерировать кеш формы. тогда все будет гуд.
очень хорошо логика работы становится понятна после работы с выпадающими списками. (протрахавшись две недели с КЛАДРом в свое время, и не такое прохаваешь).
ну как то так..
Коллбек функция обработки естественно есть:
$form = ahah_example_callback_helper();
drupal_set_message('<pre>$form: '.check_plain(print_r($form,1)).'</pre>');
drupal_set_message('<pre>$_POST: '.check_plain(print_r($_POST,1)).'</pre>');
$output=$_POST['category_select'];
drupal_json(array('status'=>'TRUE','data'=>$output));
exit();
}
Из примера я взял функцию хелпера, которую вызываю в данном обработчике. Но значение поля category_select нет ни в $_POST ни во всем полученном массиве $form
Такое ощущение что хук моего модуля добавляет свои элементы формы неправильно (не добавляет в кэш что ли), так как во всем полученном массиве $_POST нет ни одного значения для добавленных в моем хуке элементов. То есть например значения добавленные модулем CCK есть, а моих нет.
В итоге нашел похожую проблему
http://www.drupal.ru/node/71792
Оказалось что проблема возникает в сочетании с элементом filefield.
Проверил, убив из моей формы поле прикрепления файла - заработало.
Единственное пока не удалось разобраться (как и ТС из темы по ссылке) в чем же собственно проблема. Есть предположение что проблема в подгружаемом файле filefield.js, который дезаблит лишнее...
Помогло обновление jquery.form.js до последней версии
http://drupal.org/node/806500#comment-5076470