Drupal 7 表单设置错误不起作用

Drupal 7 表单设置错误不起作用,drupal-7,Drupal 7,我有以下表单函数。我的问题是,当我提交表单时,我没有看到错误消息(尽管它以红色突出显示)。它确实登录到了watchdog表中,所以我知道它已经到达了代码中的那个点 //Inside hook menu $items['resume/joblist'] = array( 'page callback' => 'drupal_get_form', 'page arguments' => array("ac_resume_job_list_form"), 'access arg

我有以下表单函数。我的问题是,当我提交表单时,我没有看到错误消息(尽管它以红色突出显示)。它确实登录到了watchdog表中,所以我知道它已经到达了代码中的那个点

//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");
  }
}
//内部钩子菜单
$items['resume/joblist']=数组(
“页面回调”=>“drupal获取表单”,
“页面参数”=>array(“ac\U resume\u job\u list\u form”),
“访问参数”=>数组(“查看作业列表”),
“标题”=>“作业列表”,
'说明'=>'作业列表',
);
函数ac_resume_job_list_form($form,&$form_state)
{
$form['display_options']=数组(
“#类型”=>“字段集”,
“#title”=>“显示选项”,
“#属性”=>数组(“样式”=>“宽度:250px”),
);
$form['display_options']['limit']=array(
“#键入”=>“文本字段”,
“#title”=>“Limit”,
“#大小”=>2,
);
$form['display_options']['submit']=array(
“#键入”=>“提交”,
“#值”=>“更改显示”,
);
返回$表格;
}
函数ac_resume_job_list_form_validate($form,&$form_state)
{

如果($form_state['values']['limit']据我所知,当父元素上有属性时,您只需要使用
'display_options][limit'
语法,那么我已经将您的代码放入了一个测试站点,您只需要将代码改为使用
'limit'

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

这对我来说很好。

我在某个地方读到,如果表单元素高亮显示,但错误消息没有显示,那么您的自定义主题可能不包含该页面上的$messages变量,因此它无法显示……。

您的意思是:“它高亮显示为红色)。它确实会登录到watchdog表中,因此我知道它正在代码中达到该点。”


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

它只突出显示红色字段。它没有显示错误消息。您是否在模板文件或主题预处理函数中调用
drupal\u get\u form
?不,它是从hook\u menuhmm调用的。您主题的
page.tpl中的行有趣吗.php
文件?丢失了。我添加了它,现在它正在显示。谢谢!