1

我对 Symfony 的验证有疑问。我有一个类型的表单,User用户映射了一些其他的东西(比如AddressesPhones等)

现在我想强制用户的创建者让他成为Addresses/Phones主要之一(实体有一个字段)。

我该如何解决这个问题?因此,只有 OneToMany 实体之一(其中之一Addresses)需要是主要实体。并确保它始终至少是一个。

4

1 回答 1

1

User一种方法是以一对一的方式向指向主地址的实体添加一个字段并使其成为必需。

另一种方法是创建一个自定义验证器,它将遍历用户地址并验证其中至少一个被标记为主要地址。

或者你可以只使用True 约束

/**
 * @True
 */
public function isThereOnePrimaryAddress()
{
    $primes = 0;
    foreach ($this->getAddresses() as $address) {
        if ($address->isPrimary()) {
            $primes++;
        }
    }

    if (1 === $primes) {
        return true;
    }

    return false;
}
于 2013-09-10T17:09:20.760 回答