[РЕШЕНО]Ошибка с формами

Главные вкладки

Аватар пользователя naTureX naTureX 24 марта 2010 в 12:38

Итак, есть код. Выдаёт ошибку всё время. Удаляю функцию 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 (
    
=> 'Search 1 Car',
    
=> '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;
 }
?>

..

Комментарии

Аватар пользователя naTureX naTureX 24 марта 2010 в 12:56

Спасибо за быстрый ответ. Но мистика: исправил стало ругаться на 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;
}
?>

Есть идеи?