Symfony如何为表单字段生成id / name?

时间:2016-05-17 18:29:32

标签: symfony

buildForm()中,我想提取当前表单字段节点的完整ID /名称。 $builder->getName()仅返回当前节点的名称,但我需要完整的属性路径,例如:

id="type_employments_0_location"
name="type[employments][0][location]"

构建表单时有没有办法生成这个?

我正在开发一个自定义的必填字段类型扩展程序,用于查找" mandatoriness"构建表单时每个字段的内容;因此我需要buildForm()中的完整属性路径,以便我可以修改选项数组。

3 个答案:

答案 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属性来完成。

Form Variables Reference

答案 2 :(得分:0)

简而言之:表单框架生成的完整属性路径不适用于buildForm(),但可供buildView()finishView()使用。如果您需要访问完整的属性路径,请使用它们。