有一些字段的表单:
protected function configureFormFields(FormMapper $formMapper)
{
$isNew = !$this->getRequest()->get($this->getIdParameter());
$formMapper
->add('title')
->add('file', 'file', array('required' => $isNew))
;
}
是否有更好的方法只为新对象创建字段?
答案 0 :(得分:2)
就我们而言,我们的做法与原帖相同,但我们很高兴知道有一个更清洁的解决方案:)
事件订阅者看起来太复杂,无法满足这么小的需求。
祝你好运, 克里斯托夫
答案 1 :(得分:0)
我认为更好的方法是将一个事件订阅者添加到表单类,您可以在此处查看示例:
http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.html
谢谢;)
答案 2 :(得分:0)
您可以使用Sonata isNew()
函数found here from the docs:
protected function configureFormFields(FormMapper $formMapper)
{
$isNew = $this->getSubject()->isNew();
$formMapper
->add('title')
->add('file', 'file', array('required' => $isNew))
;
}
然而,$this->getSubject()
没有返回正确的内容存在一些问题。有a pull request open to fix these problems(我已将我的评论链接到有关如何在当前状态下使用分支的说明。)
答案 3 :(得分:0)
使用此:
$isNew = $this->getSubject()->isNew();
引发错误:
Attempted to call an undefined method named "isNew" of class "SomeEntity".
所以我改用了这个:
if ($this->getSubject()->getId() === null) {
$isNew = true;
} else {
$isNew = false;
}
我希望它可以帮助将来遇到相同问题的任何人。