symfony2:null日期渲染

时间:2012-06-11 22:56:10

标签: forms date symfony

大家

我在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

http://groups.google.com/group/symfony2/browse_thread/thread/9cb5268caccc4559/1ce5e555074ed9f4?lnk=gst&q=empty+date+#1ce5e555074ed9f4

3 个答案:

答案 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();
}