为什么我的表单提交时我的提交处理程序没有被调用?从页面模板中调用以下函数...在引导模式窗口中......所以在页面加载时加载模态。我有一种感觉条件是干扰调用提交处理程序或我没有返回什么?此代码位于表单的模块中。我正在使用默认的提交处理程序。
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 :(得分:0)
尝试使用方括号而不是花括号。例如:$ node-&gt; field_win_dates [&#39; und&#39;] [0] [&#39;值&#39;]。
答案 1 :(得分:0)
在Drupal中,按 Drupal asks进行操作。
如果您需要从表单中获取数据,只需使用* _validate和* _submit函数。
无需处理$ _SERVER [&#39; REQUEST_METHOD&#39;]。