Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Zend_Validate_date通过Zend_表单验证日期的输入字段_Php_Zend Framework_Zend Form_Zend Validate - Fatal编程技术网

Php 使用Zend_Validate_date通过Zend_表单验证日期的输入字段

Php 使用Zend_Validate_date通过Zend_表单验证日期的输入字段,php,zend-framework,zend-form,zend-validate,Php,Zend Framework,Zend Form,Zend Validate,我正在扩展Zend_表单以创建一个新的自定义表单。我尝试使用上面的代码验证日期,但它根本不起作用,当我输入无效输入时,没有显示任何内容。这件有什么帮助吗 编辑: 这是扩展表单的开始 class Application_Form_CreateProject extends Zend_Form { public function init() { ... } } 那是控制器 $form = new Application_Form_CreateProject();

我正在扩展Zend_表单以创建一个新的自定义表单。我尝试使用上面的代码验证日期,但它根本不起作用,当我输入无效输入时,没有显示任何内容。这件有什么帮助吗

编辑:

这是扩展表单的开始

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());

当您尝试此功能时,您会得到什么:

$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'
));

不,我仍然得到相同的结果。那么如何检查有效性呢?
$form->isValid($request->getPost())
bool(false)数组(1){[“projected start”]=>array(1){[0]=>string(15)“dateFalseFormat”}
。因此,表单的其余部分或
POST
数据肯定有问题。尝试
var\u dump
ing你的
POST
数据,看看你是否得到了预期的结果,这会使你的表单失效。注:请用更多的代码展开你的问题。最好是显示如何准确扩展
Zend_表单
并构建元素的代码。这也是一个关于如何初始化表单以及如何传递数据的简单示例。BUGS BUGSOk,我发现了一个bug。显然,您不能在输入元素的名称中使用破折号。现在,当您输入13/13/13时,它表示无效。但是,123123仍然返回有效。谢谢你的帮助,剩下的漏洞我要去regex了。
$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'
));
$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;