2011-03-15 116 views
2
$this->addElement('text', 'projected-start', array(
     'required' => false, 
     'validators' => array (
      array('date', false, array('MM/dd/yyyy')) 
     ), 
     'label'  => 'Projected Start:', 
     'class'  => 'form-date' 
    )); 

我正在扩展Zend_Form以创建新的自定义窗体。我试图使用上面的代码验证一个日期,但它只是不工作,没有什么显示,当我输入一个无效的输入。对此有帮助吗?使用Zend_Validate_Date通过Zend_Form验证日期的输入字段

编辑:

class Application_Form_CreateProject extends Zend_Form 
{ 
    public function init() 
    { ... } 
} 

那延伸的形式的开始。

$form = new Application_Form_CreateProject(); 
     $request = $this->getRequest(); 
     if ($request->isPost()) { 
      if ($form->isValid($request->getPost())) { 
           echo "true"; 
      } 
     } 
     $this->view->form = $form; 

这是控制器

echo $this->form->setAction($this->url()); 

这就是视图

回答

2

什么你当你试试这个:

$f = new Zend_Form(); 
$f->addElement('text', 'projected-start', array(
    'required' => false, 
    'validators' => array (
     array('date', false, array('MM/dd/yyyy')) 
    ), 
    'label'  => 'Projected Start:', 
    'class'  => 'form-date' 
)); 

$data = array(
    'projected-start' => '13/03/2011' 
); 
var_dump($f->isValid($data)); 
var_dump($f->getErrors()); 
die; 
+0

'bool(false) array(1){ [“projection-start”] => array(1){ [0] = > string(15)“dateFalseFormat” } } ' – user434366 2011-03-15 22:52:03

+0

那么,那么工作。所以,你的表单的其余部分或'POST'数据必定有问题。尝试'var_dump'你的'POST'数据,看看你是否得到预期的结果,应该使你的表单失效。 – 2011-03-15 22:56:13

+0

PS .:请用更多的代码扩大你的问题。最好使用代码来展示如何扩展Zend_Form并构建元素。此外,还介绍了如何实现表单以及如何传递数据。 – 2011-03-15 23:00:14

1

你可以试试这个

$this->addElement('text', 'projected-start', array(
    'required' => false, 
    'validators' => array (
     new Zend_Validate_Date(array('format' => 'MM/dd/yyyy')) 
    ), 
    'label'  => 'Projected Start:', 
    'class'  => 'form-date' 
)); 
+0

不,我仍然得到相同的结果。 – user434366 2011-03-15 21:41:54

+0

你如何检查有效? – azat 2011-03-15 21:54:04

+0

'$ form-> isValid($ request-> getPost())' – user434366 2011-03-15 22:04:38