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().