form_set_error не работает - PullRequest
2 голосов
/ 27 января 2012

У меня есть следующие функции формы. Моя проблема в том, что когда я отправляю форму, я не вижу сообщения об ошибке (оно выделено красным). Он регистрирует в таблице 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");
  }
}

Ответы [ 3 ]

3 голосов
/ 27 января 2012

Насколько я знаю, вам нужно использовать синтаксис 'display_options][limit' только в том случае, если в родительском элементе есть атрибут #tree, я просто поместил ваш код на тестовый сайт, и вы просто нужно изменить код для использования 'limit' вместо:

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

Это прекрасно работает для меня.

0 голосов
/ 19 февраля 2014

Что вы имеете в виду: «хотя он выделен красным). Он регистрирует таблицу сторожевых таймеров, поэтому я знаю, что доходит до этой точки в коде».

Возможно, сообщение есть, но ваша тема / CSS скрывает его; -).

0 голосов
/ 21 марта 2012

Я где-то читал, что если у вас выделен элемент формы, но сообщение об ошибке не отображается, то ваша пользовательская тема, вероятно, не содержит переменную $ messages на этой странице, поэтому она не может отображаться ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...