我在Symfony2中遇到问题,
这是mi形式代码:
$form = $this->createFormBuilder($pedido)
->setAction($this->generateUrl("ec_main_guardar_pedido"))
->add('cliente','entity',array('class' =>'ECMainBundle:Clientes','property'=>'cliente'))
->add('fecha', 'date', array('widget' => 'single_text',
'format' => 'd-M-y',
'required' => 'false',
'read_only' => 'false'))
->add('fentrega', 'date',array('format' => 'yyyy-MM-dd'))
->add('estado','hidden', array('data' => '3'))
->add('Guardar', 'submit')
->getForm();
该字段' fecha'不工作,我测试其他格式,但我没有解决方案,总是说' null',我尝试生成javascript来显示一个日历,但问题是相同的,总是null
如果在实体中添加此内容:
public function __construct()
{
$this->lineas = new ArrayCollection();
$this->fecha= new \DateTime();
$this->fentrega= new \DateTime();
}
字段' fecha'永远是今天。
田野' fentrega'随着小部件选择工作完美。
有人可以帮忙吗?
提前致谢。
答案 0 :(得分:1)
嗯,现在工作完美,问题是日期的格式。
使用此代码工作正确:
控制器:
$form = $this->createFormBuilder($pedido)
->setAction($this->generateUrl("ec_main_guardar_pedido"))
->add('cliente','entity',array('class' => 'ECMainBundle:Clientes','property'=>'cliente'))
->add('fecha', 'date', array('widget' => 'single_text',
'format' => 'd-M-y'))
->add('fentrega', 'date',array('format' => 'yyyy-MM-dd'))
->add('estado','hidden', array('data' => '3'))
->add('Guardar', 'submit')
->getForm();
在视图中:
$('#form_fecha').datepicker({
dateFormat : 'd-m,-yy',
prevText : '<i class="fa fa-chevron-left"></i>',
nextText : '<i class="fa fa-chevron-right"></i>',
});
问题是'format' => 'd-M-y')
等于dateFormat : 'd-mm-yy'
原因......我不知道......
感谢大家的帮助
答案 1 :(得分:-1)
请勿使用__construct()
设置默认数据。在创建对象之后(通过__construct),Doctrine执行其魔术并覆盖由构造函数设置的值。
准备方法setDefauts()
并将设置默认数据放在那里。然后,在创建模型之后,即。在控制器动作中运行此方法。
// /Acme/FooBundle/Entity/Bar.php
// ...
public function setDefaults()
{
$this->fecha = new \DateTime();
$this->fentrega = new \DateTime();
}
// ...
// /Acme/FooBundle/Controller/BarController.php
// ...
public function someAction()
{
$var = new Bar();
$var->setDefaults();
}
// ...