将error设置为zend形式的字段


set error to field in zend form

我在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 !!!");
    }

如果我使用die;在if()中,它将死亡。所以如果它起作用的话。我用了各种方法,但都没用。

有谁知道为什么没有吗?

我建议你:

  • 创建一个新的验证器,例如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)

希望能有所帮助。