Symfony包含32个内置表单类型,覆盖了很大范围的企业需求。我们的社区持续地给出全新表单类型的建议,一旦它们能够满足日常所需,我们将引入框架。这就是为什么我们决定在Symfony 3.2中增加一个全新的DateInterval表单类型。
这个表单类型对那些处理备忘、预约或类似功能的程序十分有用。如果你的model定义了一个remindEvery
属性用于存储一个DateInterval
PHP对象,添加下面代码使用三个select
元素来编辑它的值:
1 2 3 4 5 6 7 | use Symfony\Component\Form\Extension\Core\Type\DateIntervalType;
// remindEvery is a DateInterval PHP object
// remindEvery是一个DateInterval PHP对象
$builder->add('remindEvery', DateIntervalType::class, array(
'widget' => 'choice',
)); |
DateInterval
类型十分灵活,它可以操作DateInterval
PHP对象、数组和ISO 8601 duration strings。当使用ISO 8601这种格式时,设置input
选项为string
以允许表单类型正确地转换其值:
1 2 3 4 5 6 | // remindEvery is a PHP string using ISO 8601 format
// remindEvery是一个使用了ISO 8601格式的PHP字符串
$builder->add('remindEvery', DateIntervalType::class, array(
'input' => 'string',
'widget' => 'choice',
)); |
除了input
和widget
,这个表单类型还定义了18个配置选项,用来控制年、月、周、日、时、分和秒是否显示,以及它们的占位符和取值是否允许被选中。
相关的文档还没有合并,但你已经可以在这篇Symfony Docs pull request中读到。