2016-03-01 38 views
2

我在一个项目中看到,property-path可以用方括号像这样使用:什么方括号意味着property_path Symfony的形式选项

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

这似乎是每个字段对象的foo财产与关联给定id,但我还没有发现任何有关它的文档。只有this example。 任何想法是什么意思,它在哪里记录?

+0

看看我认为这是你的问题的答案。 http://php.net/manual/en/language.types.array.php – Mattia

+0

@Mattia .__。事实上,事实并非如此。 – Manolo

回答

2

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

财产路径阵列的映射已经改变。

以前,属性路径"street"映射到两者的类的字段$street(或它的存取getStreet()setStreet())和阵列的索引['street']或实施\ArrayAccess的对象。

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

另外看看Symfony关于the PropertyAccess component的文档。

property_path的用途在FormType Field页面有说明,但我猜你已经知道它的用途了。

为您发布的代码,我猜(我用Symfony的形式只有一次,只划伤其表面)对于对象$foo的每个属性bar它创建了一个<input type="checkbox" name="foo_bar">

当表单提交后,property_path讲述的形式把命名foo_bar复选框的价值为$data['bar']->foo,其中$data是形式的方法getData()返回的对象。

+0

完美!实际上它也适用于''property_path'=>“[foo]”'。 “property_path”=>“[$ i] .foo”'也是有效的原因在这里解释:https://symfony.com/doc/current/components/property_access/introduction.html#reading-from-arrays – Manolo

0

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

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

这是记录Here,只是做一个“卷曲”的查找。

+0

我的意思是“方括号”,对不起。 – Manolo

相关问题