我的行動:Symfony:如何將Doctrine Collection傳遞給Form作爲默認值?
public function executeEdit(sfWebRequest $request)
{
// Get the object
$article = $this->getRoute()->getObject();
// Create the form
$this->form = new ArticleEditForm($article);
}
你可以看到,$article
是獲取傳遞給窗體作爲默認值學說集合。該$article
對象包含了諸如「標題」,「文本」,「作家」等
一個領域但這會導致錯誤表單製作:
500 | Internal Server Error | Doctrine_Record_UnknownPropertyException
Unknown record property/related component "_csrf_token" on "article"
所以基本上,形式試圖使用Doctrine Collection來填充表單元素的默認值。但在那個對象中顯然沒有csrf_token
...但它仍然試圖找到一個用作默認值...
然後會發生什麼,如果你有一個窗體總是有額外的空字段是空的,但其他人有傳遞的默認值。如果這些空字段沒有在教義收集組值,那麼你會得到一個錯誤...
現在,很明顯我可以做一個簡單的陣列的時間提前,我指定默認值,並傳遞:
$defaults = array('title' => $article->title, 'text' => $article->text, 'author' => $article->author);
$this->form = new ArticleEditForm($defaults);
This Works。我的問題是,出於簡單的原因,上面的「文章」就是一個例子。實際上我的表格裏面有大約30個字段。所以這個解決方案工作的唯一方法就是不得不在數組中手動指定30個單獨的默認值。顯然,從維護角度來看,這是一個糟糕的解決方案。
我想Symfony的開發人員很聰明,想出一個好的解決方案,但我找不到它......任何線索?
這是不正確的。 CSRF令牌由表單創建。它使用上面提到的代碼進行渲染,或者在模板中使用'echo $ form-> renderHiddenFields();'。無論您是否選擇渲染,錯誤依然存在。 –