Sonata管理员忽略“必需”属性

时间:2018-06-13 08:31:26

标签: php symfony sonata-admin

我正在使用一个使用Sonata管理包的Symfony 2.7应用程序。在我的一个实体'configureFormFields()方法中,我有以下内容:

        ->add('market',
            'entity',
            array(
                'multiple' => true,
                'class' => 'Exozet\AppBundle\Entity\Market',
                'choices' => $query = $this
                    ->entityManager
                    ->getRepository(Market::class)
                    ->findBy(['status' => 100])
            ,
                'placeholder' => 'no_selection',
                'required' => true,
                'label' =>  $this->trans('country_of_origin', [], 'messages'),
                'attr' => array(
                    'class' => 'jsb_ jsb_GetDealersForCountry jsb_HideOtherTabs',
                    'data-jsb' => json_encode(array(
                        'url' => $this->getRequest()->getBaseUrl() . '/dealers/country/id/'
                    )),
                )
            )
        )

...但我发现我能够在“市场”领域中保存而没有任何价值。

以下是我的实体中的市场属性的注释:

/**
 *
 * @ORM\ManyToMany(targetEntity="Exozet\AppBundle\Entity\Market", cascade={"persist"})
 *
 */
private $market;

无论如何,是否有一种简单的方法可以使这个字段成为强制性的?

2 个答案:

答案 0 :(得分:0)

以下是我的注释现在的样子:

/**
 *
 * @ORM\ManyToMany(targetEntity="Exozet\AppBundle\Entity\Market", cascade={"persist"})
 * @Assert\Count(min=1)
 *
 */
private $market;

此更改来自Symfony文档:

https://symfony.com/doc/2.8/reference/constraints/NotNull.html

答案 1 :(得分:0)

请参阅以下链接,并在管理类

中为市场字段创建自定义验证

sonata admin validation