是否可以创建日期输入字段,在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. Extjs 5 - 日期选择器只有年
- 2. 日期选择:默认选择年份
- 3. 在IOS中设置日期选择器只选择月份和年份
- 4. jQuery UI日期选择器功能只选择年或月或年 - 月 - 日期
- 5. jquery UI日期选择器月份和年份只有css定位问题
- 6. 如何更改我的日期选择器只显示月,日期和年份
- 7. 从2日期列表中选择所有年份
- 8. 日期选择器 - 选择月/年
- 9. 转换日期格式(只有年份)
- 10. 如何显示只有月份和年份字段的Android日期选取器?
- 11. 引导日期选择器 - 几个月甚至几年只有
- 12. AngularJS日期选择器只有几年和几个月
- 13. 如何创建jQuery UI的日期选择器当前的月份和日期和年份只显示
- 14. jQuery日期选择器挑选年份第一个月然后
- 15. symfony - jQuery的日期时间选择器
- 16. 选择最多的日期与给定的年份和月份
- 17. 如何在MySQL和PHP中选择没有日期的年份?
- 18. 在Javascript中填入日期和日期:输入:月份和年份
- 19. 日期时间选择器在选择年份月份或日期时跳过项目Android
- 20. 选择一年中的所有日期
- 21. 从数据库中选择月份和年份的日期
- 22. 防止改变日期的月份/年份选择
- 23. angular2材料2日期选择器 - 输出日期格式
- 24. 选择年份以及从日期时间字段和插入日期字段
- 25. Boostrap日期选择器年份范围超越?
- 26. 日期选择器年份白色背景
- 27. 在iOS中禁用年份HTML5日期选择器
- 28. 日期时间选择器不显示当前年份(WPF)?
- 29. 如何在AngularJS材料中获得年份日期选择器?
- 30. 2日期间的所有年份和月份SQL
感谢您的帮助! – szilagyif
这是一个解决问题的黑客,但不回答这个问题 - 你如何用FormBuilder做到这一点? – Acyra