是否可以创建日期输入字段,在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