2011-08-01 29 views
0

我已经在Drupal网站上设置了一个多步骤webform,并且我试图检查字段并保留在webform的第一页,如果该字段不符合条件。在webform的第一步中,用户在文本字段(comp_name)中输入公司名称。当用户下一步按下时,我想检查输入的公司名称是否是节点的标题。 到目前为止,我有:在多步骤webform上检查字段和重定向 - Drupal

function check_for_company_form_alter(&$form, $form_state, $form_id) 
{ 
if ($form_id == "webform_client_form_2") 
{ 
    if($form_state['post']['details']['page_num'] == 1){ 
     $comp_name = $form_state['post']['submitted']['comp_name']; 
     $query = "SELECT nid FROM node WHERE title='".$comp_name."'"; 
     $nidComp= db_result(db_query($query)); 
     if($nidComp>0){ 
     echo 'we found node id'.$nidComp; 
     } 
    else{ 
      //redirection to page 1 of the multistep form 
    } 
    } 


} 
} 

代码工作很好,但我不能找出如何重定向到第1

回答

0

使用自定义验证钩form_set_error。

<?php 

... 
// within hook_form_alter 
$form['#validate'][] = 'check_for_company_validate'; 
... 

function check_for_company_validate($form, &$form_state) { 
    // Check if the company name ISN'T the title of a node here. 
    // If so... 
    form_set_error('post][submitted][comp_name', 'Something is not right.'); 
} 

?> 

hook_form_alter在窗体生成之前触发。这听起来像你想hook_validate或(也许)hook_submit。此解决方案适用于Drupal 6.

+0

完美。非常感谢 – Cyril