【问题标题】:symfony3 same validation for model and admin formsymfony3 对模型和管理表单的相同验证
【发布时间】:2017-08-10 20:29:43
【问题描述】:

我正在使用 FOS 用户包和 Sonata Admin Bundle。 我在模型中进行了验证,例如:

 //src\AppBundle\Entity\User.php
 //class User extends BaseUser
 /**
 * @var string
 * @Assert\NotBlank(
 *     message = "xxx"
 * )
 * @ORM\Column(name="address", type="text")
 */
private $address;

我想在我的 AdminController 中使用相同的验证 - 是否有任何选项如何继承模型的验证?现在我必须这样做:

//src\AppBundle\Admin\UserAdmin.php
//class UserAdmin extends AbstractAdmin
public function validate(ErrorElement $errorElement, $object)
{
    $errorElement
        ->with('address')
        ->assertNotBlank()
        ->end();
}

【问题讨论】:

  • 你能描述一下你使用的是哪个AdminBundle吗?
  • 抱歉,更新问题
  • 不了解您的验证功能 - 您不能在您的实体上调用 Symfony 验证器并收工吗?
  • @JasonRoman 你是什么意思?我认为 validate() 会在实体上自动调用,但事实并非如此。
  • 哦,也许它与 SonataAdminBundle 相关,抱歉我没有阅读那部分

标签: php symfony validation fosuserbundle sonata-admin


【解决方案1】:

您可以使用自定义验证组来做到这一点。

第一组验证约束。

从您提供的示例中

 //src\AppBundle\Entity\User.php
 //class User extends BaseUser
 /**
 * @var string
 * @Assert\NotBlank(
 *     message = "xxx",
 *     groups={"reg"}
 * )
 * @ORM\Column(name="address", type="text")
 */
private $address;

接下来在你的管理类中定义一个受保护的 $formOptions 属性,像这样

//src\AppBundle\Admin\UserAdmin.php
//class UserAdmin extends AbstractAdmin
    protected $formOptions = array(
    'validation_groups' => 'reg'
    );

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 2010-11-01
  • 1970-01-01
  • 2016-06-18
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多