symfony3 对模型和管理表单的相同验证

symfony3 same validation for model and admin form

我正在使用 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();
}

您可以使用自定义验证组来执行此操作。

第一组是验证约束。

根据您提供的示例

 //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;

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

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