Проверьте поле ввода для даты через Zend_Form с Zend_Validate_Date - PullRequest
2 голосов
/ 16 марта 2011
    $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, чтобы создать новую пользовательскую форму.Я попытался проверить дату, используя приведенный выше код, но она просто не работает, и при вводе неверных данных ничего не отображается.Любая помощь в этом?

РЕДАКТИРОВАТЬ:

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 ]

2 голосов
/ 16 марта 2011

Что вы получите, когда попробуете это:

$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;
1 голос
/ 16 марта 2011

Вы можете попробовать это

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