Не получается накинуть validate и submit на самописную форму

Ср, 11/01/2017 - 20:50

Никак не пойму, в чем проблема. Есть форма из нескольких полей,

function jfilter_form($form, &$form_state)
{    
 $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 - тоже в никуда.
В чем может быть проблема?

0 Спасибо

Комментарии

Аватар пользователя xakd
1 month 2 недели назад xakd #

Причина обнаружилась. Оказывается get-формы не хотят в validate и прочее

0 Спасибо
Аватар пользователя sas@drupal.org
1 month 2 недели назад sas@drupal.org #

>get-формы
Что это?

0 Спасибо
Аватар пользователя xakd
1 month 1 неделя назад xakd #

Это когда   $form['#method'] = 'get' ; - написано же в коде. В итоге параметры передаются в адресной строке, а не через $_POST и в итоге валидация и субмит наглухо отказываются обрабатываться отдельными функциями. Попробуйте сами

0 Спасибо
Аватар пользователя sas@drupal.org
1 month 1 неделя назад sas@drupal.org #

Неправильно написано в коде.

0 Спасибо
Аватар пользователя dgastudio
1 month 1 неделя назад dgastudio #

xakd, я не буду говорить утверждая, но, если мне память не изменяет, я как то бодался с этим.

проблема в том что через пост, идет внутрення обработка друпал (vlidation, submit)

при get, идет просто редирект, друпал не может обработать эти данные.

0 Спасибо
Аватар пользователя xakd
1 month 1 неделя назад xakd #

Да, что-то типа видимо. В итоге нужно ручками обрабатывать субмит. Я в итоге отказался от GET(схватился фактически по ошибке за него) и сделал все через стандартно, через POST

0 Спасибо
Аватар пользователя mbaev
1 month 1 неделя назад mbaev #

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

0 Спасибо
Аватар пользователя dgastudio
1 month 1 неделя назад dgastudio #

в первом посте что?

0 Спасибо
Аватар пользователя mbaev
1 month 1 неделя назад mbaev #

Вы ведёте себя как хранитель xakd. )

5 Спасибо
Аватар пользователя xakd
1 month 1 неделя назад xakd #

Вон код сверху, что ещё надо. Добавьте в модуль форму и проверьте, сабмит и validate вы не прицепите к ним никак

0 Спасибо
Аватар пользователя xakd
3 недели 6 дней назад xakd #

Не понял, что вы предлагаете изменить? Альтерить свою же форму надо?

0 Спасибо
Аватар пользователя mbaev
3 недели 6 дней назад mbaev #
xakd написал:
Не понял, что вы предлагаете изменить?

Измените название функции, которая возвращает форму jfilter_form на что-то другое. Например, jfilter_admin_form.

0 Спасибо
Аватар пользователя xakd
3 недели 6 дней назад xakd #

хм, завтра попробую. Думаете прокатит, типа Друпал забаговал так свой хук старейший?

0 Спасибо