Forms 使新对象只需要字段
表单中有一些字段:Forms 使新对象只需要字段,forms,symfony,doctrine-orm,symfony-sonata,Forms,Symfony,Doctrine Orm,Symfony Sonata,表单中有一些字段: protected function configureFormFields(FormMapper $formMapper) { $isNew = !$this->getRequest()->get($this->getIdParameter()); $formMapper ->add('title') ->add('file', 'file', array('required' => $i
protected function configureFormFields(FormMapper $formMapper)
{
$isNew = !$this->getRequest()->get($this->getIdParameter());
$formMapper
->add('title')
->add('file', 'file', array('required' => $isNew))
;
}
是否有更好的方法使字段仅用于新对象?我认为更好的方法是将事件订阅者添加到表单类中。您可以在此处查看示例:
谢谢;) 我认为更好的方法是将事件订阅者添加到表单类中。您可以在此处查看一个示例:
谢谢;) 在我们这方面,我们的做法与原来的帖子相同,但我们很高兴知道有一个更干净的解决方案:) 事件订阅者看起来太复杂了,无法满足如此小的需求 致以最良好的祝愿,
Christophe在我们这方面,我们的做法与原来的帖子相同,但我们很高兴知道有一个更干净的解决方案:) 事件订阅者看起来太复杂了,无法满足如此小的需求 致以最良好的祝愿,
Christophe您可以使用索纳塔
isNew()
功能:
但是,
$this->getSubject()
没有返回正确的内容会出现一些问题。有(我已链接到我的评论,其中包含如何在分支当前状态下使用分支的说明)。您可以使用SonataisNew()
函数:
但是,$this->getSubject()
没有返回正确的内容会出现一些问题。有(我已链接到我的评论,并说明如何在当前状态下使用分支。)使用此:
$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;
}
我希望它能帮助将来面临同样问题的人。使用此:
$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;
}
我希望它能帮助将来面临同样问题的人。是的,谢谢,我也看过这个sollutuon。但正如Christophe在下面注意到的:对于这个简单的任务来说,它太复杂了。是的,谢谢你,我也看过这个sollutuon。但正如Christophe在下面所注意到的:对于这个简单的任务来说,它太复杂了。