square括号Symfony表单选项

时间:2016-03-01 17:06:57

标签: php forms symfony

我在一个项目中看到property-path可以像这样使用方括号:

foreach ($foo as $i => $object) {
    $builder->add("foo_{$i}", 'checkbox', array(
        'property_path' => "[$i].foo",
    ));
}

这似乎将每个字段与给定foo的对象的id属性相关联,但我还没有找到任何关于它的文档。仅this example。 知道这是什么意思以及记录在哪里?

2 个答案:

答案 0 :(得分:3)

这就是Symfony UPGRADE from 2.0 to 2.1所说的:

  

属性路径到数组的映射已更改。

     

以前,属性路径"street"映射到某个类的字段$street(或其访问者getStreet()setStreet())以及索引['street']实现\ArrayAccess的数组或对象。

     

现在,属性路径"street"仅映射到类字段(或访问器),而属性路径"[street]"仅映射到索引。

另请参阅Symfony关于the PropertyAccess component的文档。

FormType Field页面中解释了property_path的目的,但我想您已经知道它的用途。

对于您发布的代码,我猜(我只使用了一次Symfony表单,只是略微表面)对于对象bar的每个属性$foo,它创建了一个{ {1}}。

提交表单后,<input type="checkbox" name="foo_bar">会告知表单将名为property_path的复选框的值放入foo_bar,其中$data['bar']->foo是方法{返回的对象表格的{1}}。

答案 1 :(得分:-1)

这是一个PHP的东西。如果在其周围添加波浪形括号,而不是将其从字符串中分离出来,则可以在字符串中使用变量。

$x = "world";
echo "Hello, {$x}";
// is equivalent to
echo "Hello, " . $x;

记录Here,只需查找“卷曲”。