2012-01-27 10 views
2

私は以下のフォーム機能を持っています。私の問題は、フォームを提出するときですが、エラーメッセージが表示されません(赤色に強調表示されています)。それはウォッチドッグテーブルにログインするので、コード内のその時点に達しています。form_set_error not working

//Inside hook menu 
$items['resume/joblist'] = array(
    'page callback' => 'drupal_get_form', 
    'page arguments' => array("ac_resume_job_list_form"), 
    'access arguments' => array('view joblist'), 
    'title' => 'Job List', 
    'description' => 'Job List', 
); 


function ac_resume_job_list_form($form, &$form_state) 
{ 
    $form['display_options'] = array(
    '#type' => 'fieldset', 
    '#title' => 'Display Options', 
    '#attributes' => array("style" => "width:250px"), 
); 

    $form['display_options']['limit'] = array(
    '#type' => 'textfield', 
    '#title' => 'Limit', 
    '#size' => 2, 
); 

    $form['display_options']['submit'] = array(
    '#type' => 'submit', 
    '#value' => 'Change Display', 
); 


    return $form; 
} 


function ac_resume_job_list_form_validate($form, &$form_state) 
{ 
    if ($form_state['values']['limit'] <= 0 || !is_int($form_state['values']['limit'])) 
    { 
    watchdog('ac_resume', 'Display option error'); //THIS SHOWS IN ERROR LOG 
    form_set_error('limit', "Limit must be a positive number"); 
    } 
} 

答えて

3

は、私の知る限り、あなたが唯一の親要素がそれに#tree属性を持っているとき'display_options][limit'構文を使用する必要が知っているように、私はちょうどテストサイトにあなたのコードを入れているし、あなただけのコードを変更する必要があります代わりに'limit'を使用する:

form_set_error('limit', "Limit must be a positive number"); 

それは私にとってうまくいきます。

私はあなたがフォーム要素を強調しているが、エラーメッセージが表示されない場合、それは表示されませんので、あなたのカスタムテーマのprobalyは、そのページの$メッセージの変数が含まれていないことをどこかで読ん
+0

赤色のフィールドのみが強調表示されます。エラーメッセージは表示されません。 –

+0

万が一、テンプレートファイルやテーマの前処理関数で 'drupal_get_form'を呼び出していますか? – Clive

+0

いいえ、それはhook_menuから呼び出されています –

0

....

+2

ええ、それは既に答えられましたが、ありがとう –

0

何「それは赤で強調表示されています。)ウォッチドッグテーブルにログインしているので、コード内のそのポイントに到達しています。

メッセージはおそらくありますが、あなたのテーマ/ CSSはそれを隠しています;-)。