2012-06-11 70 views
3

所有人symfony2:無效日期呈現

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

回答

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> 

[add to some javascript file]

jQuery(document).ready(function() { 
    var nullDate = function(id) { 
    $(".nullabledate select").each(function(key,elem){ 
     $(elem).val(''); 
    }) 
    } 
    nullDate(); 
} 
1

可以解決這個問題的方法:

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

你是接近的解決方案。

2

隨着現代版本的Symfony,你似乎需要:

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

empty_value已取代placeholder,你需要傳遞一個陣列,每個「空」值。