Drupal 7 Hook_forms не работает

Может кто-нибудь сказать мне, почему это не работает?

Drupal_render (drupal_get_form) динамически создается в цикле foreach и помещается в тему таблицы.

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

foreach( $w as $k => $v ) {
    $r[] = array(
        '$'.number_format($v->amount, 2),
        date('F d, Y', $v->created),
        filter_xss($v->paypal_email),
        drupal_render(drupal_get_form(('toefl_tutors_admin_withdrawl_request_form_'.$v->id), $v->id))
    );
}


function toefl_tutors_admin_withdrawl_request_forms($form_id, $args) {
    $forms = array();

    if (!empty($args) && $form_id == 'toefl_tutors_admin_withdrawl_request_form_' . $args[0]) {
        $forms[$form_id] = array(
            'callback' => 'toefl_tutors_admin_withdrawl_request_form',
            'callback arguments' => array($args[0]),
        );
    }

    return $forms;
}


function toefl_tutors_admin_withdrawl_request_form($form, &$form_state, $id = 0) {

    $form['twid'] = array(
        '#type'     => 'hidden',
        '#value'    => $id
    );

    $form['submit'] = array(
        '#type'         => 'submit',
        '#value'        => t('Send Money'),
       '#attributes'    => array('class' => array('btn', 'btn-success'))
    );

    return $form;
}

1 ответ

Я решил проблему.

Мне нужно было переименовать функцию hook_forms в toefl_tutors_forms(), потому что мое имя модуля на самом деле toefl_tutors, а не toefl_tutors_admin_withdrawl_request

Видимо и исправьте меня, если я ошибаюсь, чтобы использовать hook_forms, вы должны назвать его mymodulename_forms, а не mymodulename_xx_forms.

Меня смутило то, что hook_form отлично работает, когда вы называете функцию формы mymodulename_xx_form().

Другие вопросы по тегам