【问题标题】:Symfony Validate Multiple Entities and Related EntitiesSymfony 验证多个实体和相关实体
【发布时间】:2015-11-18 12:53:27
【问题描述】:

仅使用 Symfony 验证器(无表单!),我试图弄清楚如何验证多个实体或(子/相关)实体并在一个数组/对象中返回错误。

例如:

假设我有 2 个不同的用户实体要使用相同的验证组进行验证。

使用validator api docs 我可以这样做:

$user1 = ... //first user
$user2 = ... //second user
$errors = [];

$error = $validator->validate($user1, null, ['create']);
if(count($error) > 0)
{
    $errors['user1'] = $error;
}

$error = $validator->validate($user2, null, ['create']);
if(count($error) > 0)
{
    $errors['user2'] = $error;
}

if(count($errors) > 0 )
{
   // handle errors
}

这可行,但是我想知道是否有这样做的方法? 就像将现有错误传递给验证器,或者将实体数组传递给验证器。

当我想验证一个实体及其关系时,也会出现同样的问题。

例如:

假设我有一个与用户实体具有一对多关系的公司实体。

在创建新公司时,我还创建了一个新用户。

$company = new Company();
$company->set...

$user = new User();
$user->set...

$company->addUser($user);

$validator->validate ...

我想再次验证这家公司和用户。我可以以与前面所述类似的方式进行操作。但是,问题又来了,是否有一种构建方式来传递现有错误或让验证器验证相关实体(也许与验证组?)

谷歌搜索这个问题几乎没有任何像样的结果,所以我希望有人能指出我正确的方向。

或者我应该自己实现这样的逻辑(这不是问题),我只是想防止在已经存在的情况下重写这样的逻辑。

提前致谢!

【问题讨论】:

  • 您可以尝试为您的案例添加验证组。来自多个实体的字段可以属于一个验证组,您验证“母”实体
  • 好吧,虽然我应该是可能的,但是多个(不相关的)实体呢?
  • 关系的真棒,现在我只需要找到是否需要实现自定义逻辑来验证实体数组(示例 1)

标签: validation symfony doctrine entity


【解决方案1】:

如果您想验证相关实体,请使用 @Valid 注释。

如果您想一次性验证实体数组,一种解决方案可能是另一个持有该数组和 @Valid 注释的集合的类。关键是您不需要表单来验证对象,也不需要教义实体。只是带有验证注释的普通旧 PHP 对象。

如果另一个对象类对您来说太过分了,则可以动态创建约束并通过集合传递给验证器服务。在 Symfony 文档的 How to Validate Raw Values (Scalar Values and Arrays) 章节中,您可以找到详细信息(第二个示例)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多