Php 使用Zend_Validate_date通过Zend_表单验证日期的输入字段
我正在扩展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();
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;