1

有没有办法通过 Symfony2 或教义 2 中的注解来要求:如果你填充了字段 A,那么你还必须指定字段 B?

在我的情况下,用户可以指定他们想要安排的 cron 作业类型。如果类型是 odbc,则必须至少选择一个 db-table。如果它是任何其他类型的 cron 作业,则不需要选择表(甚至没有意义)。

4

1 回答 1

2

您可以在注释中配置断言/回调,指向验证实体数据的回调函数。

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\ExecutionContext;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity
 * ...
 * @Assert\Callback(methods={"validateDB"})
 */
class Item
{
    protected $type;
    protected $table; 

    public function validateDB(ExecutionContext $context)
    {
        $path = $context->getPropertyPath();
        if ($this->type == 'odbc' and empty($this->table)) {
            // ".type" is the property name where you want the error to appear
            // in the form.
            $context->setPropertyPath($path . '.type'); 
            $context->addViolation("ODBC table must be specified.", array(), null);
        }
    }
}
于 2013-01-07T11:38:52.803 回答