【问题标题】:Sonata admin ignores "required" attribute奏鸣曲管理员忽略“必需”属性
【发布时间】:2023-03-11 15:13:02
【问题描述】:

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

        ->add('market',
            'entity',
            array(
                'multiple' => true,
                'class' => 'MyCompany\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="MyCompany\AppBundle\Entity\Market", cascade={"persist"})
 *
 */
private $market;

那么,有没有一种简单的方法可以让这个字段真正成为必填项?

【问题讨论】:

    标签: php symfony sonata-admin


    【解决方案1】:

    请参考以下链接并在管理类中为市场字段创建自定义验证

    sonata admin validation

    【讨论】:

      【解决方案2】:

      这是我的注释现在的样子:

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

      此更改来自 Symfony 文档:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-07
        • 2018-04-30
        • 1970-01-01
        • 2018-03-22
        • 1970-01-01
        • 2016-06-12
        • 1970-01-01
        • 2017-06-03
        相关资源
        最近更新 更多