我在Zend中有这个表单,用户应该设置start&某事的结束日期。如果结束日期落后于开始日期,我试图使表单/字段无效但它不起作用。我覆盖了isValid()方法并且它工作但是现在其他东西它不起作用只是因为isValid()方法被覆盖。
我是怎么做的:
$req = $this->getRequest();
$form->setAction($req->getRequestUri());
if($req->isPost() && $form->isValid($req->getPost())) {
$startTime = strtotime(date($form->getValue('live_start')));
$endTime = strtotime(date($form->getValue('live_end')));
if($startTime > $endTime){
$form->live_end->addError("End time shouldn't be earlier than start time !!!");
}
如果我使用死亡;在if()里面它会死掉。所以如果它正常工作,那就保证了。我使用了各种方法,但它没有用。
任何人都有一些想法为什么不呢?
答案 0 :(得分:0)
我建议你:
创建新的验证程序,例如YouApp_Validate_Date_GreaterThan
将其附加到live_end字段。
以这种方式覆盖您的表单isValid
方法
public function isValid($data)
{
$this->live_end->getValidator('GreaterThan')->setDate($data['live_start']);
return parent::isValid($data);
}
在验证器实现中,将要比较的日期设置为属性,以便轻松地动态设置->setDate($yourDate)
希望它有所帮助。