是否可以創建日期輸入字段,在Symfony 2 FormBuilder中只有年份選擇器小部件,還是應該使用簡單的文本類型輸入字段?只有年份選擇器的Symfony 2日期輸入
8
A
回答
0
您可以使用form customization:
{% block date_widget %}
{% spaceless %}
{% if widget == 'single_text' %}
{{ block('field_widget') }}
{% else %}
<div {{ block('widget_container_attributes') }}>
{{ date_pattern|replace({
'{{ year }}': form_widget(form.year),
'{{ month }}': '',
'{{ day }}': '',
})|raw }}
</div>
{% endif %}
{% endspaceless %}
{% endblock date_widget %}
1
這種方法是給我的錯誤與驗證:
{{ date_pattern|replace({
'{{ year }}': form_widget(form.year),
'{{ month }}': '',
'{{ day }}': '',
})|raw }}
我finallay通過添加CSS解決的問題屬性隱藏字段:
{{ date_pattern|replace({
'{{ year }}': form_widget(form.year),
'{{ month }}': form_widget(form.month, { 'attr' : { 'style': 'display:none' }}),
'{{ day }}': form_widget(form.day, { 'attr' : { 'style': 'display:none' }}),
})|raw }}
3
最好使用選擇字段類型,而不是黑匣子的日期字段類型或僅使用文本字段類型。
使用一些基本的PHP日期/時間函數,你會得到你所需要的。
在FormType:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('yearfield', 'choice',
array(
'required' => true, 'choices' => $this->buildYearChoices()
));
}
public function buildYearChoices() {
$distance = 5;
$yearsBefore = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y") - $distance));
$yearsAfter = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y") + $distance));
return array_combine(range($yearsBefore, $yearsAfter), range($yearsBefore, $yearsAfter));
}
0
一個更簡單的方法來獲得,例如,一項爲期五年的範圍裏,有選擇類型:
'choices' => array(
Date('Y') => Date('Y'),
Date('Y') - 1 => Date('Y') - 1,
Date('Y') - 2 => Date('Y') - 2,
Date('Y') - 3 => Date('Y') - 3,
Date('Y') - 4 => Date('Y') - 4,
)
注意,是創造收益的字符串選定的一年。
15
您還可以使用:
'choices' => range(Date('Y') - 4, date('Y'))
-2
我寫我的代碼,這樣在數據庫中插入正確
->add('yearfield', 'datetime', array(
'widget' => 'single_text',
'format' => 'yyyy'
))
1
你可以重寫 'date_pattern':
{{ form_row(form.fieldName, {'date_pattern': '<span style="display: none;">{{ day }}{{ month }}</span>{{ year }}'}) }}
注意!用display: none
隱藏字段,請勿刪除它們以通過驗證。
0
退房這個答案在這裏:How to display a month-year dropdown in Symfony2
只需使用一個不同的date_widget塊(樹枝)。
相關問題
- 1. iPhone:只有月份和年份字段的日期選擇器
- 2. Extjs 5 - 日期選擇器只有年
- 3. jQuery的日期選擇器只月份和年份
- 4. 日期選擇:默認選擇年份
- 5. 在IOS中設置日期選擇器只選擇月份和年份
- 6. Android:僅有月份和年份的日期選擇器
- 7. ExtJS無法在日期選擇器中選擇月份/年份
- 8. 只有日期和月份的Android日期選擇器
- 9. jquery UI日期選擇器月份和年份只有css定位問題
- 10. jQuery UI日期選擇器功能只選擇年或月或年 - 月 - 日期
- 11. 日期選擇器月份和年份選定的錯誤
- 12. Bootstrap日期選擇器默認爲1900年輸入2位數年
- 13. 如何更改我的日期選擇器只顯示月,日期和年份
- 14. 從2日期列表中選擇所有年份
- 15. 查詢日期選擇器年份第一次選擇當前年份
- 16. Symfony的2輸入日期,只顯示前的日子今天
- 17. 日期選擇與日期,月份和年份單獨的框
- 18. 根據當年設置日期選擇器的年份
- 19. 日期選擇器具有數據屬性的年份範圍
- 20. 日期選擇器 - 選擇月/年
- 21. 使用j查詢日期選擇器只顯示月份和年份
- 22. 轉換日期格式(只有年份)
- 23. JQuery日期選擇器僅適用於月份和年份
- 24. 如何顯示只有月份和年份字段的Android日期選取器?
- 25. 引導日期選擇器 - 幾個月甚至幾年只有
- 26. AngularJS日期選擇器只有幾年和幾個月
- 27. 如何創建jQuery UI的日期選擇器當前的月份和日期和年份只顯示
- 28. 日期選擇標籤與月份年份相同的選項
- 29. JQUI日期選擇器改變月份或年份在選擇後重置
- 30. jQuery日期選擇器挑選年份第一個月然後
感謝您的幫助! – szilagyif
這是一個解決問題的黑客,但不回答這個問題 - 你如何用FormBuilder做到這一點? – Acyra