有没有办法通过 Symfony2 或教义 2 中的注解来要求:如果你填充了字段 A,那么你还必须指定字段 B?
在我的情况下,用户可以指定他们想要安排的 cron 作业类型。如果类型是 odbc,则必须至少选择一个 db-table。如果它是任何其他类型的 cron 作业,则不需要选择表(甚至没有意义)。
有没有办法通过 Symfony2 或教义 2 中的注解来要求:如果你填充了字段 A,那么你还必须指定字段 B?
在我的情况下,用户可以指定他们想要安排的 cron 作业类型。如果类型是 odbc,则必须至少选择一个 db-table。如果它是任何其他类型的 cron 作业,则不需要选择表(甚至没有意义)。
您可以在注释中配置断言/回调,指向验证实体数据的回调函数。
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);
}
}
}