2014-07-06 6 views
0

Quelqu'un peut-il me dire pourquoi cela ne fonctionne pas? Le drupal_render (drupal_get_form) est créé dynamiquement dans une boucle foreach et placé dans un thème de table.Drupal 7 Hook_forms ne fonctionne pas

Tout charge à l'exception des champs de formulaire. J'ai essayé le débogage en ajoutant des échos et des sorties à chaque appel de fonction de formulaire, mais la page continue à charger. Je ne suis pas sûr si ces fonctions ne sont tout simplement pas appelées ou s'il y a un autre problème.

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

Répondre

0

J'ai résolu le problème.

I nécessaire pour renommer la fonction hook_forms à toefl_tutors_forms() parce que mon nom de module est en fait toefl_tutors pas toefl_tutors_admin_withdrawl_request

Apparemment, et corrigez-moi si je me trompe, afin de pouvoir utiliser hook_forms vous devez le nommer mymodulename_forms, non mymodulename_xx_forms . Ce qui m'a rendu confus était que hook_form fonctionne parfaitement lorsque vous nommez la fonction de formulaire mymodulename_xx_form().

+0

Oh. J'ai également dû effacer le cache, après avoir changé le nom, aussi. –

Questions connexes