Итак, есть код. Выдаёт ошибку всё время. Удаляю функцию search_cars_form_form3 всё работает с 2мя формами, мне ещё нужна третья. Ошибка:
warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'search_cars_form_form3' was given in Z:\home\www.mysite.ru\www\includes\form.inc on line 372.
Код
<?php
function search_cars_perm() {
return array (t('access search_cars'));
}
/**
* Реализация hook_menu().
*/
function search_cars_menu() {
$items = array();
$items['search_cars'] = array(
'title' => 'Search Cars Form',
'page callback' => 'search_cars_form',
'access arguments' => array('access search_cars'),
'description' => 'Search car form',
'type' => MENU_CALLBACK,
);
return $items;
}
//вывод форм1, форм2, форм3
function search_cars_form() {
$output .= drupal_get_form('seach_cars_form_form1');
$output .= drupal_get_form('search_cars_form_form2');
$output .= drupal_get_form('search_cars_form_form3');
return $output;
}
/**
* Реализация формы ввода данных
*/
function seach_cars_form_form1($form_state) {
// определяем первую форму
//значения для радио баттонов.
$options = array (
1 => 'Search 1 Car',
2 => 'Search Group Cars'
);
//форма с радио баттонами
$form['search_cars_type'] = array(
'#prefix' => '<table border = "3" cellpadding = "0" cellspacing = "0" style = "width:auto"><tr><td style = "width:80%">',
'#type' => 'radios',
'#options' => $options,
'#description' => t('Choose kind of search'),
'#suffix' => '</td></tr></table>'
);
//терь кнопки отправить и зачистить форму
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
$form['clear'] = array(
'#type' => 'submit',
'#value' => t('Reset'),
'#validate' => array ('search_cars_form_clear'),
);
return $form;
}
function
search_cars_form_form2($form_state) {
// определяем вторую форму
$form['container'] = array(
'#prefix' => '<table border = "3" cellpadding = "0" cellspacing = "0" style = "width:auto"><tr><td style = "width:48%">',
'#type' => 'textfield',
'#title' => t('Number'),
'#size' => 10,
'#maxlength' => 11,
'#suffix' => '</td></tr></table>'
);
//терь кнопки отправить и зачистить форму
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
$form['clear'] = array(
'#type' => 'submit',
'#value' => t('Reset'),
'#validate' => array ('search_cars_form_clear'),
);
return $form;
}
function
seach_cars_form_form3($form_state) {
$form['group_container'] = array(
'#prefix' => '<table border = "3" cellpadding = "0" cellspacing = "0" style = "width:auto"><tr><td style = "width:95%">',
'#type' => 'textarea',
'#title' => t('Insert 10-20 num of cars'),
'#cols' => 5,
'#rows' => 10,
'#suffix' => '</td></tr></table>'
);
//терь кнопки отправить и зачистить форму
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
$form['clear'] = array(
'#type' => 'submit',
'#value' => t('Reset'),
'#validate' => array ('search_cars_form_clear'),
);
return $form;
}
//Новый валидатор для кнопки Reset. Выставляя здесь значение $form_state['rebuild']
// в TRUE, мы даем указание пропускать обработчик формы. А пропуская обработчик,
// мы выполняем стандартное действией формы — возвращаемся на нее же с пустыми
//значениями.
function search_cars_form_clear($form, &$form_state) {
$form_state['rebuild'] = TRUE;
}
?>
..
Комментарии
drupal_get_form('search_cars_form_form3');
seach_cars_form_form3()
Тщательнее надо
Опечаточка у вас:
function seach_cars_form_form3($form_state) {
Спасибо за быстрый ответ. Но мистика: исправил стало ругаться на form1 и form3, теперь аналогичные сообщения. Кэш отчистил ошибки не исчезли.
Странно но раньше метод вывода многих форм через такую конструкцию работал корретно..
<?php
function search_cars_form() {
$output .= drupal_get_form('search_cars_form_form1');
$output .= drupal_get_form('search_cars_form_form2');
$output .= drupal_get_form('search_cars_form_form3');
return $output;
}
?>
Есть идеи?
Спасибо решено. Внимательность и ещё раз внимательность...