在buildForm()
中,我想提取当前表单字段节点的完整ID /名称。 $builder->getName()
仅返回当前节点的名称,但我需要完整的属性路径,例如:
id="type_employments_0_location"
name="type[employments][0][location]"
在构建表单时有没有办法生成这个?
我正在开发一个自定义的必填字段类型扩展程序,用于查找" mandatoriness"构建表单时每个字段的内容;因此我需要buildForm()
中的完整属性路径,以便我可以修改选项数组。
答案 0 :(得分:1)
从FormConfigInterface开始,您应该可以使用$builder->getPropertyPath()
。
它将返回一个PropertyPathInterface对象,只需将其用作字符串即可将实际属性路径作为字符串(即print $builder->getPropertyPath()
将提供type[employments][0][location]
)。
答案 1 :(得分:0)
实际上,这很容易。 对于每个字段类型都分配了许多变量。
<label for="{{ form.fieldname.vars.id }}">...</label>
来自symfony doc(Form Variables Reference):
变量对于每种字段类型都是通用的。某些字段类型可能有 更多变量和一些变量只适用于此 某些类型。
假设您在模板中有一个表单变量,并且您想要 引用名称字段上的变量,访问变量是 通过在FormView对象上使用public vars属性来完成。
答案 2 :(得分:0)
简而言之:表单框架生成的完整属性路径不适用于buildForm()
,但可供buildView()
和finishView()
使用。如果您需要访问完整的属性路径,请使用它们。