Проблема отправки формы
Я понятия не имею, почему моя форма отправки работает только в том случае, если я вывожу на экран значения аргумента $form.
Если я добавлю:
echo '<pre>';
print_r($form);
echo '</pre>'
В моей функции отправки я получаю новую "страницу" с распечатанными этими данными, но когда я раскомментирую это, кажется, ничего не работает, я снова вижу страницу формы.
function gate_check_form_submit($form, &$form_state) {
$post = $form['#post'];
// echo '<pre>';
// print_r($form);
// echo '</pre>';
echo '<pre>';
print_r($post); //gives nothing
echo '</pre>';
$day = intval($post['gate_day']);
$month = intval($post['gate_month']);
$year = intval($post['gate_year']);
$isRemember = isset($post['gate_remember_me']);
if ($day && $month && $year) {
$allowed_age = (int) variable_get('gate_minimal_age', 18);
$min_born_time = mktime(0, 0, 0, date("m"), date("d"), date("Y") - $allowed_age);
$born_time = mktime(0, 0, 0, $month, $day, $year);
echo '<pre>';
print_r($min_born_time);
echo '</pre>';
echo '<pre>';
print_r($born_time);
echo '</pre>';
if ($min_born_time >= $born_time) {
echo 'yes';
sess_write(GATE_SESSION_NAME, TRUE);
if ($isRemember) {
set_cookie(GATE_COOKIE_NAME, sha1($born_time + srand()), time()+60*60*24*7);
}
drupal_goto('/');
}
echo 'no';
}
}
2
1 answers
Вы делаете это неправильно*. Вам следует прочитать краткое руководство по API форм , чтобы понять, как правильно использовать обработчики проверки и отправки.
* По нескольким причинам, самая большая из которых заключается в том, что вы используете #post, что является большим запретом. Вместо этого следует использовать очищенные значения из $form_state['values']
.
5
Author: Damien Tournoud, 2011-05-04 12:16:13