2011-08-01 10 views
0

Drupal Webサイトで多段階Webフォームを設定しましたが、フィールドが条件を満たさない場合は、フィールドをチェックしてWebフォームの最初のページにとどまります。 Webフォームの最初のステップで、ユーザーはテキストフィールドに会社名を入力します(comp_name)。ユーザーが次に押すと、入力した会社名がノードのタイトルであるかどうかを確認したい。 は、これまでのところ私が持っている:多段階Webフォームのチェックフィールドとリダイレクト - 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 
    } 
    } 


} 
} 

コードはうまく動作しますが、私は、カスタム検証フックとform_set_errorを使用してページに1

答えて

0

をリダイレクトする方法を見つけることができません。

<?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

関連する問題