form_set_error无效

时间:2012-01-27 15:25:32

标签: drupal-7

我有以下表格功能。我的问题是当我提交表单时,我没有看到错误消息(虽然它突出显示为红色)。它确实登录了看门狗表,所以我知道它已经到了代码中的那一点。

//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 个答案:

答案 0 :(得分:3)

据我所知,当父元素上有#tree属性时,您只需要使用'display_options][limit'语法,我只是将您的代码放入测试网站,您只需要更改代码以改为使用'limit'

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

这对我来说很好。

答案 1 :(得分:0)

我在某处读到如果你突出显示了表单元素,但错误消息没有显示,那么你的自定义主题probaly不包含该页面上的$ messages变量,因此它无法显示....

答案 2 :(得分:0)

你是什么意思:“虽然它突出显示为红色。”它确实登录了看门狗表,所以我知道它已经达到了代码中的那一点。“

消息可能在那里,但你的主题/ css正在隐藏它; - )。