2016-02-17 2 views
0

Почему мой обработчик отправки не вызывается, когда моя форма отправляется? Следующая функция вызывается из шаблона страницы ... в модальном окне бутстрапа ... так что модальные нагрузки при загрузке страницы. Я чувствую, что условия мешают обработчику отправки, или я ничего не возвращаю? Этот код находится в модуле для формы. Я использую обработчик отправки по умолчанию.Drupal Form Submit Handler не работает, но почему?

function winner_modal_form_communication($node) { 

    if ($_SERVER['REQUEST_METHOD'] != 'POST') {  

я тест, чтобы увидеть, если он уже был размещен, в противном случае две даты вычитается из поля, так как она будет называться дважды (один раз при загрузке, а затем один раз на посту). Если он уже опубликован (так как это означает, что они заполнили форму выигрыша), я распечатываю сообщение с подтверждением.

 // WINNING DATES 

     if (!empty($node->field_win_dates{'und'}{0}{'value'})) { 

      $winDatesString = $node->field_win_dates{'und'}{0}{'value'}; 

      $winDatesArray = explode(", ", $winDatesString);       

     } 

     // TODAYS DATE 

     $todaysDatePST = date("Y-m-d H:i:s");          


     // EVENT DATES 

     $eventDateUTC = $node->field_date{'und'}{0}{'value'};      

     $eventDateObject = new DateTime($eventDateUTC, new DateTimeZone('UTC'));  

     $eventDateObject->setTimezone(new DateTimeZone('America/Los_Angeles'));  

     $eventDatePST = $eventDateObject->format('Y-m-d H:i:s');      

Я просто настраиваю некоторые переменные ... и затем некоторые условия.

 // EXPIRED EVENT 

     if ($todaysDatePST > $eventDatePST) { 

      print "Sorry, this event has expired.<br /><button type='button' class='btn btn-default' data-dismiss='modal'>Continue</button>"; 

     } 

     // WINNER 

     else if (($todaysDatePST > $winDatesArray[0]) && (!empty($winDatesString))) { 


      print "You've just won<br />TWO FREE TICKETS<br />to see " . $node->title . "!"; 


      $form = drupal_get_form('winner_modal_form'); 


      print drupal_render($form); 


      unset($winDatesArray[0]);              


      $newWinningDatesString = implode(", ",$winDatesArray);       


      $node->field_win_dates{'und'}{0}{'value'} = $newWinningDatesString;    


      node_save($node); 


     } 


     // NO WINNER 

     else { 

      print "You didn't win tickets to " . $node->title. ", but you can still learn more by pressing the continue button."; 

      print "<br /><button type='button' class='btn btn-default' data-dismiss='modal'>Continue</button>"; 


     } 


    } 


    // WINNER CONFIRMATION 

    else { 


     print "Thank you! This is the confirmation modal window. That's right, you were the winner!<br /><button type='button' class='btn btn-default' data-dismiss='modal'>Continue</button>"; 


    } 


} 

Если я удаляю вышеупомянутые условия, работает обработчик отправки.

function winner_modal_form_submit($form, &$form_state) { 

    dpm("It worked!"); 

} 

Что я делаю неправильно? Любое понимание было бы очень благодарным (я новичок в программировании).

ответ

0

Попробуйте использовать квадратные скобки вместо фигурных скобок. Пример: $ node-> field_win_dates ['und'] [0] ['value'].

+0

Ну, это более читаемо, но это не так. – know1

0

Когда в Drupal выполните Drupal asks.

Если вам нужно получить данные из формы, просто используйте функции * _validate и * _submit.

Не нужно обрабатывать $ _SERVER ['REQUEST_METHOD'].

Смежные вопросы