Никак не пойму, в чем проблема. Есть форма из нескольких полей,
{
$form['quiz'] = array(
'#title' => t('Name of quiz'),
'#type' => 'select',
'#options' => array ( 20 => 20, 50 => 50, 100 => 100),
'#required' => true,
);
$form['passed'] = array(
'#title' => t('Passed'),
'#type' => 'select',
'#options' => array ( 1 => t('Passed'), 2 => t('Not passed')),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
$form['#submit'][] = 'jfilter_form_submit'; // это все попытки накинуть обработчики
$form['#validate'][] = 'jfilter_form_validate';
$form['#validate'] = 'jfilter_form_validate';
$form['actions']['submit']['#submit'][] = 'jfilter_form_submit';
$form['#method'] = 'get' ;
$form['#redirect'] = false;
$form['#pre_render'][] = 'jfilter_form_pre_render';
return $form;
}
Она работает - но к ней почему то не выходит добавить ни validate, ни submit - просто не реагирует.
Ни на стандартные имена -
jfilter_form_validate($form, &$form_state)
jfilter_form_submit($form, &$form_state)
.
Ни на объявление в форме явно
$form['#validate'][] = 'jfilter_form_validate';
$form['#submit'][] = ' jfilter_form_submit';
Реакции ноль, в функции даже не заходит, одно из полей объявлено как required - тоже в никуда.
В чем может быть проблема?
Комментарии
Причин может быть несколько от &$form, &$form_state до алтера где то по пути, попробуйте сначала https://www.drupal.org/project/examples
Причина обнаружилась. Оказывается get-формы не хотят в validate и прочее
>get-формы
Что это?
Это когда
$form['#method'] = 'get' ;
- написано же в коде. В итоге параметры передаются в адресной строке, а не через $_POST и в итоге валидация и субмит наглухо отказываются обрабатываться отдельными функциями. Попробуйте самиНеправильно написано в коде.
xakd, я не буду говорить утверждая, но, если мне память не изменяет, я как то бодался с этим.
проблема в том что через пост, идет внутрення обработка друпал (vlidation, submit)
при get, идет просто редирект, друпал не может обработать эти данные.
Да, что-то типа видимо. В итоге нужно ручками обрабатывать субмит. Я в итоге отказался от GET(схватился фактически по ошибке за него) и сделал все через стандартно, через POST
Полный код в студию, иначе невозможно догадаться что именно у вас та написано.
в первом посте что?
Вы ведёте себя как хранитель xakd. )
Вон код сверху, что ещё надо. Добавьте в модуль форму и проверьте, сабмит и validate вы не прицепите к ним никак
Каждый день это делаю Сразу не додумался, что вы реализовали хук hook_form(), поэтому решил, что у Вас там есть альтеры.
Измените имя функции с формой.
Вам сюда: https://api.drupal.org/api/drupal/modules!node!node.api.php/function/hoo...
Не понял, что вы предлагаете изменить? Альтерить свою же форму надо?
Измените название функции, которая возвращает форму jfilter_form на что-то другое. Например, jfilter_admin_form.
хм, завтра попробую. Думаете прокатит, типа Друпал забаговал так свой хук старейший?