我的控制器代码:
public function postFilesAction(Request $request)
{
$validator = $this->get('validator');
$requestCredentials = RequestCredentials::fromRequest($request);
$errors = $validator->validate($requestCredentials);
...
RequestCredentials 中的 validate 方法(回调约束)。
/**
* @Assert\Callback(payload = {"errorCode" = "FILE_FILE_URL"})
*/
public function validate(ExecutionContextInterface $context)
{
if (! ($this->fileExistsAndValid() || $this->fileUrlExistsAndValid())) {
$context->buildViolation('Neither file nor file_url is present.')->addViolation();
}
}
回调按预期工作,但值为$constraintViolation->$constraint->$payload
null。
当我尝试在其他约束(例如 NotBlank)中使用有效负载时,它可以工作(我可以在ConstraintViolation
对象中看到它)。
是 Symfony 错误还是我做错了什么?我应该使用其他解决方案来解决我的问题吗?(我需要检查请求中是否至少存在两个字段(file
或file_url
)之一)。