3

每个人

我在 Symfony2 中遇到空日期和表单的问题。

当我创建一个日期为空的实体时,它工作正常,在数据库中插入了一个 NULL 值。但是当我想编辑它时,它呈现为今天,我发现无法呈现 empy_values

正如预期的那样,“preferred_choices”不起作用,因为“日期”不是“选择”。

似乎在某处调用了一个新的 \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

4

3 回答 3

2

使用现代版本的 Symfony,您似乎需要:

$builder->add('dueDate', DateType::class, array(
    'placeholder' => ['year' => '--', 'month' => '--', 'day' => '--']
)

empty_value已被替换placeholder,您需要传递一个包含每个“空”值的数组。

于 2016-06-16T14:05:50.297 回答
1

你可以这样解决:

$builder->add('dueDate', 'date', array(
   'label'=>'Due date', 
   'empty_value' => array('----'),
   'required'=>false
))

你已经接近解决方案了。

于 2014-04-10T08:56:44.603 回答
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();
}
于 2012-06-13T21:55:53.950 回答