【发布时间】:2011-08-04 17:17:29
【问题描述】:
我的行动:
public function executeEdit(sfWebRequest $request)
{
// Get the object
$article = $this->getRoute()->getObject();
// Create the form
$this->form = new ArticleEditForm( $article );
}
您可以看到 $article 是作为默认值传递给表单的 Doctrine 集合。 $article 对象包含“标题”、“文本”、“作者”等字段。
但这会导致表单创建出错:
500 | Internal Server Error | Doctrine_Record_UnknownPropertyException
Unknown record property / related component "_csrf_token" on "article"
所以基本上,表单试图使用 Doctrine Collection 来填写表单元素的默认值。但是该对象中显然没有csrf_token...但它仍在尝试找到一个用作默认值...
如果您有一个表单,其中总是有额外的空字段是空的,但其他字段具有传递的默认值,会发生什么情况。如果这些空字段在 Doctrine Collection 中没有设置值,那么您会收到错误...
现在,显然我可以提前创建一个简单的数组,在其中指定默认值并传递它:
$defaults = array( 'title' => $article->title, 'text' => $article->text, 'author' => $article->author );
$this->form = new ArticleEditForm( $defaults);
这行得通。我的问题是上面的“文章”是一个简单的例子。实际上,我的表单中有大约 30 个字段。因此,此解决方案唯一可行的方法是必须在数组中手动指定 30 个单独的默认值。从维护的角度来看,这显然是一个糟糕的解决方案。
我认为 Symfony 的开发人员足够聪明,可以提出一个好的解决方案,但我就是找不到...有什么线索吗?
【问题讨论】:
标签: php symfony1 symfony-forms