这个问题是关于Symfony PHP框架的。Symfony DateTimeToArrayTransformer是否使用表单字段的名称来创建一个值?
我想更好地理解Symfony如何将复合表单类型的值映射到单个值。
当您使用DateType
表单类型并将其配置为使用单独的字段作为月份,日期和年份时,它会创建单独的表单字段,它们各自具有字段名称。
DateType
也有数据转换器。通常情况下,数据转换器只是将数据从一种格式转换为另一种格式。但对我来说,似乎DateTimeToArrayTransformer
也在其构造函数中获取表单字段名称。
看到这里的构造:
/**
* Constructor.
*
* @param string $inputTimezone The input timezone
* @param string $outputTimezone The output timezone
* @param array $fields The date fields <--- See this parameter.
* @param bool $pad Whether to use padding
*
* @throws UnexpectedTypeException if a timezone is not a string
*/
public function __construct($inputTimezone = null, $outputTimezone = null, array $fields = null, $pad = false)
{
//...
DateTimeToArrayTransformer on github
我无法找到有关fields
参数在互联网上的任何信息。但我得到的印象是这意味着现有表单字段的字段名称。
当然,Symfony必须收集month
,day
和year
字段的表单字段值,以便创建一个字符串值。但是,它是通过数据转换器还是以其他方式执行此操作?
这就是我想知道的。
请参阅https:// github。com/symfony/form/blob/master/Extension/Core/Type/DateType.php#L120在那一行,'array('year','month','day')'包含实际的表单字段名称在上面的行中用于构建器中的字段名称),还是其他的东西?它是否涉及构建器中使用的名称? – user2190492
嗯,是的,他们是没有前缀的表单字段名称。实际的html''可能会包含一些表单前缀。但这只是这种形式的类型,而这种变形器是为了一起工作而设计的。这通常不是一个规则。 –