大家
我在Symfony2中遇到空日期和表单时遇到问题。
当我创建一个空日期的实体时,它工作正常,在数据库中插入一个NULL值。但是当我想编辑它时,它渲染为今天,我发现无法渲染empy_values
正如预期的那样,“preferred_choices”不起作用,因为“date”不是“选择”。
似乎在某处调用了一个新的\ DateTime()。
索引和显示操作没有问题:
[索引/ show.html.twig]
{% if entity.dueDate %}
{{ entity.dueDate|date('Y-m-d') }}
{% endif %}
如果我在控制器中询问,行为是预期的行为
[控制器]
if (!$entity->getDueDate()) {
// enters here when there is NULL in the database
}
以下是实体和表单定义:
[实体]
/**
* @var date $dueDate
*
* @ORM\Column(name="dueDate", type="date", nullable="true")
*/
private $dueDate;
[表格]
$builder->add('dueDate', 'date', array('label'=>'Due date', 'empty_value' => array('year' => '----', 'month' => '----', 'day' => '----'),'required'=>false))
请给我一个提示,提前谢谢。
2011-06-26有一个相关问题,谷歌群组没有答案
https://groups.google.com/forum/#!msg/symfony2/nLUmjKzMRVk/9NlOB1Xl5RwJ
答案 0 :(得分:2)
使用现代版的Symfony:
$builder->add('dueDate', DateType::class, array(
'placeholder' => ['year' => '--', 'month' => '--', 'day' => '--']
)
empty_value
已被placeholder
取代,您需要为每个"空"传递一个数组。值。
答案 1 :(得分:1)
你可以这样解决:
$builder->add('dueDate', 'date', array(
'label'=>'Due date',
'empty_value' => array('----'),
'required'=>false
))
你接近解决方案。
答案 2 :(得分:0)
我不想自己渲染表单,但是由于一个不相关的问题我已经这样做了,我开发了一些修复:
[edit.html.twig]
<div class="entry {% if not entity.dueDate %}nullabledate{% endif %}">
{{ form_label(form.dueDate) }}
{{ form_errors(form.dueDate) }}
{{ form_widget(form.dueDate) }}
</div>
[添加到一些javascript文件]
jQuery(document).ready(function() {
var nullDate = function(id) {
$(".nullabledate select").each(function(key,elem){
$(elem).val('');
})
}
nullDate();
}