Обработка кнопки в модальном ctools окне

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

Аватар пользователя Виктория Виктория 20 марта 2015 в 22:06

Доброго времени суток! Такая ситуация: есть модальное окно, построенное с помощью ctools. На этой форме есть кнопка. Как по нажатию на кнопку, обратиться к базе данных и обновить данные в некоторой таблице. Какой должен быть обработчик данной кнопки?

Комментарии

Аватар пользователя Виктория Виктория 20 марта 2015 в 22:57

Точнее дело даже в другом. Первоначально модальное окно создавала по уроку: http://www.drupaler.by/lessons/ctool-modal-api-rabota-s-modalnymi-oknami. Все получилось, окно с формой есть. Но по нажатию кнопки, при заполненных полях формы, ничего не происходит. Я создавала свою собственную форму и такая же ситуация, то есть при нажатии на кнопку, функция валидации сработает, а вот основной обработки нет. Как исправить?

Аватар пользователя whiesam whiesam 21 марта 2015 в 9:09

В callback кнопки запихиваем все действия, затем подставляем их в значения нужных полей. Но тогда функция должна быть с параметрами (&$form, &$form_state), внимание на амперсанты.
И в конце обработчика.
$form_state['rebuild'] = TRUE;

Может не помочь, на данном примере построения ctools modal window не проверял. Но работает в ctools content type.

Аватар пользователя Виктория Виктория 21 марта 2015 в 10:09

Спасибо, что откликнулиьсь. Вот код моей собственной формы, которая открывается в модальном окне:

 function ajax_publish_form($form, $form_state){
 	$form = array();
 	$form['ball'] = array(
      '#type' => 'textfield',
      '#title' => t('Оценка (в баллах)'),
      '#size' => 10,
    );
    $form['gruppa'] = array(
      '#type' => 'select',
      '#title' => t('Указать группу'),
      '#options' => array('1ПМ','1ИС','1БИ','1ИБ','2ПМ','2ИС','2БИ','2ИБ',),
    );
    $form['actions'] = array('#type' => 'actions');
    $form['actions']['subm'] = array(
      '#type' => 'submit',
      '#value' => t('Выполнить'),
      '#id'    => 'in_base',
    );
    
    return $form;
 }
 
 
 function ajax_publish_form_validate($form, &$form_state) {
  if (empty($form_state['values']['ball'])) {
    form_set_error('ball', t('Отсутствие данных'));
  }
 }
  
 function ajax_publish_form_submit($form, $form_state){
   drupal_set_message(t('Your message has been sent.'));
 } 



Необходимо действия прописать в callback - функции? Почему здесь не срабатывает submit?