是否有办法要求通过Symfony2或doctrine2中的注释:如果您已填充字段A,那么您还必须指定字段B?
在我的情况下,用户可以指定他们想要安排的cron作业类型。如果类型为odbc,则必须至少选择一个db-table。如果是任何其他类型的cron作业,则不需要表格选择(甚至是有意义的)。
答案 0 :(得分: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);
}
}
}