将错误设置为zend形式的字段

时间:2014-07-17 10:20:59

标签: php zend-framework

我在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()里面它会死掉。所以如果它正常工作,那就保证了。我使用了各种方法,但它没有用。

任何人都有一些想法为什么不呢?

1 个答案:

答案 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)

希望它有所帮助。