1
어설 션 콜백 메서드 "processSignup"이있는 엔티티 계정이 있습니다. 로그인 제약 조건과 암호 제약 조건이 성공한 경우에만 "processSignup"을 호출하고 싶습니다. 내 processSignup 메소드에서 이것을 어떻게 확인할 수 있습니까?모든 제약 조건이 충족되는 경우에만 Assert Callback 메서드를 호출하는 방법?
<?php
namespace MyProject\Bundle\FrontBundle\Entity;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Validator\ExecutionContext;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @Assert\Callback(methods={"processSignup"})
*/
class Account
{
/**
* @Assert\NotBlank()
* @Assert\Type(type="string")
* @Assert\Length(min = 6, max = 16)
*/
protected $login;
/**
* @Assert\NotBlank()
* @Assert\Type(type="string")
* @Assert\Length(min = 8, max = 12)
*/
protected $password;
/**
* @param ExecutionContext $context
*/
public function processSignup(ExecutionContext $context)
{
// if login and password constraints success, do something
}
public function getLogin()
{
return $this->login;
}
public function setLogin($login)
{
$this->login = $login;
}
public function getPassword()
{
return $this->password;
}
public function setPassword($password)
{
$this->password = $password;
}
}
'$ context-> getViolations()'를 사용해보십시오. 그것은 지금까지 모든 위반을 반환합니다. –
시도했지만 제약 조건이 충족되지 않으면 빈 배열을 반환합니다. – user777897
당신 말이 맞아요. 제약 조건이 성공했는지 아닌지를 확인하는 유일한 방법이라고 생각합니다. 사용자 이름과 암호 제약 조건을 트리거하고 배열이 비어 있는지 확인하십시오. 그냥 var_dump의 Xdebug로 이것을 할 수 있고 죽을 수 있습니다 :) –