1
最大執行時間
所以這裏是我的情況我米設置一個形式,其中我包括一個日期時間字段ZF2的Zend 驗證 DateStep致命錯誤:30秒
$this->form->add(array(
'type' => 'Zend\Form\Element\DateTime',
'name' => 'date',
'options' => array(
'label' => 'published_from',
'format' => 'Y-m-d H:i:s'
),
'attributes' => array(
'class' => 'datePicker form-control',
'readonly' => 'readonly',
'data-type' => 'date'
),
));
沒有最小/最大值或步驟,應用默認值,然後我現在開始顯示它在這樣
<?php echo $this->formDateTime($form->get('date')); ?>
的形式,我在和傳球擊中類的Zend \驗證\所有初步驗證後提交此表的生成的驗證過濾踢DateStep lines 347-362
if ($baseDate < $valueDate) {
while ($baseDate < $valueDate) {
$baseDate->add($step);
if ($baseDate == $valueDate) {
return true;
}
}
} else {
while ($baseDate > $valueDate) {
$baseDate->sub($step);
if ($baseDate == $valueDate) {
return true;
}
}
}
它落在一個明顯無限循環並超時。爲$ baseDate,當它擊中值$ valueDate首先,如果是$ baseDate =
object(DateTime)#345 (3) {
["date"]=> string(19) "1970-01-01 01:00:00"
["timezone_type"]=> int(3)
["timezone"]=> string(13) "Europe/London"
}
和$ valueDate =
object(DateTime)#442 (3) {
["date"]=> string(19) "2014-05-07 16:57:54"
["timezone_type"]=> int(3)
["timezone"]=> string(13) "Europe/London"
}
我究竟做錯了???
什麼是$步設置爲? – Farkie
默認值是1秒我剛剛意識到這一點,所以錯誤判斷它是否有必要做數十億次迭代是有意義的,我想問題是爲什麼驗證的這一部分運行,如果沒有最小最大值(意味着一個不關心日期範圍,如果他沒有把這些值),如果只是想確定它是一個有效的日期怎麼辦?我想我會使用一個普通的文本字段,並添加一個日期驗證器的形式... – user3615713