0

谁能告诉我为什么这不起作用?

drupal_render(drupal_get_form) 在 foreach 循环中动态创建并放入表主题中。

除表单字段外,所有内容都会加载。我尝试通过向每个表单函数调用添加回声和退出来进行调试,但页面继续加载。我不确定这些函数是否根本没有被调用,或者是否存在其他问题。

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;
}
4

1 回答 1

1

我已经解决了这个问题。

我需要将 hook_forms 函数重命名为 toefl_tutors_forms() 因为我的模块名称实际上是 toefl_tutors 而不是 toefl_tutors_admin_withdrawl_request

显然,如果我错了,请纠正我,为了使用 hook_forms,您必须将其命名为 mymodulename_forms,而不是 mymodulename_xx_forms。

让我感到困惑的是,当您将表单函数命名为 mymodulename_xx_form() 时,hook_form 可以完美运行。

于 2014-07-06T19:11:50.173 回答