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

时间:2017-08-10 20:29:43

标签: php symfony validation fosuserbundle sonata-admin

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

1 个答案:

答案 0 :(得分:2)

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

首先对验证约束进行分组。

从您提供的示例

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