2016-03-01 37 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

相關問題