我只想尝试在表单中创建一个Date元素,但日期格式总是" mm / dd / yyyy"无论我如何改变它。我尝试这样设置:
$this->add(array(
'name' => 'ct-start_date',
'options' => array(
'label' => 'Start Date',
'format'=>'Y-m-d'
),
'attributes' => array(
'class' => 'ct-date',
),
'type' => 'Zend\Form\Element\Date',
));
显示如下:
echo $this->formRow($form->get('ct-start_date'));
但它仍然出现在" mm / dd / yyyy"即使我这样做了:
print_r($form->get('ct-start_date')->getFormat());
出现为" Y-m-d"!所以我补充说:
$this->get('ct-start_date')->setOptions(array('format'=>'Y-m-d'));
没有变化。然后我尝试了这个:
$date = new Element\Date('ct-start_date');
$date
->setLabel('Start Date')
->setAttributes(array(
'class' => 'ct-date',
))
->setOptions(array(
'format' => 'Y-m-d'
));
$this->add($date);
同样的事情!这是Chrome中的内容。在Firefox中,它只是一个空文本输入。也许我应该回到jQuery。
答案 0 :(得分:0)
Date元素中的format
选项不会影响元素中日期的输入或输出格式。
元素的getInputSpecification()
方法使用它来确定与验证器一起使用的日期格式。
示例:
$this->add(array(
'name' => 'ct-start_date',
'options' => array(
'label' => 'Start Date',
'format'=>'Y-m-d'
),
'attributes' => array(
'class' => 'ct-date',
),
'type' => 'Zend\Form\Element\Date',
));
//...
public function getInputFilter()
{
$filter = new InputFilter()
// add default filters and validators for the date element
// the date validator will automatically be set up to accept dates
// formatted according to your elemen's "format" option
$filter->add($this->get('ct-start-date')->getInputSpecification());
../
return $filter;
}
如果要使用服务器端的日期值填充表单元素,则需要采用适当的格式(例如$element->setValue(date('Y-m-d', $date));
)
在客户端,他们要么需要以适当的格式键入它,要么验证者将返回错误,或者确保您使用的任何客户端日期输入都将其置于Y-m-d
格式。< / p>