2

有一些字段的表格:

protected function configureFormFields(FormMapper $formMapper)
{
    $isNew = !$this->getRequest()->get($this->getIdParameter());

    $formMapper
        ->add('title')
        ->add('file', 'file', array('required' => $isNew))
    ;
}

有没有更好的方法使字段只对新对象是必需的?

4

4 回答 4

2

在我们这边,我们的做法与原始帖子相同,但我们很高兴知道有一个更清洁的解决方案:)

对于这么小的需求,事件订阅者看起来太复杂了。

最好的问候,克里斯托夫

于 2012-08-23T03:20:52.823 回答
2

使用这个:

$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;
}

我希望它可以帮助任何人在未来面临同样的问题。

于 2018-12-10T07:34:03.090 回答
0

我认为更好的方法是将事件订阅者添加到表单类中,您可以在此处查看示例:

http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.html

谢谢 ;)

于 2012-08-23T00:23:58.850 回答
0

您可以使用从文档中找到isNew()的奏鸣曲功能:

protected function configureFormFields(FormMapper $formMapper)
{
    $isNew = $this->getSubject()->isNew();

    $formMapper
        ->add('title')
        ->add('file', 'file', array('required' => $isNew))
    ;
}

但是,$this->getSubject()没有返回正确的东西存在一些问题。有一个拉取请求打开以解决这些问题(我已链接到我的评论,其中包含有关如何在当前状态下使用分支的说明。)

于 2014-12-04T16:20:18.710 回答