하나의 필드가 비어 있지 않으면 (유효성> 0) 유효성 검사를받는 필드의 길이는 특정 길이 (2 문자) 여야합니다. 이 상황에서 "Assert \ Expression"이 작동하는 것처럼 보이지만 속성 길이를 찾으려고하는 데 문제가 있습니다. Expression 내에서 PHP 함수를 호출 할 수없는 것 같습니다. expression documentation 함수를 언급하지만 어쩌면 그것을 이해할 수 없다 ... 단순히 strlen()
반환하는 내 자신의 함수를 등록해야합니까. 그렇다면 어떻게 자신의 기능을 등록합니까? 이 작업을 수행하는 방법이있다, 또는 어쩌면 내가 내려다 오전 표현을 사용하는 것보다 더 좋은 방법이 있다면 누군가가 위의 경우 ...Symfony 다른 프로퍼티에 의존하는 검증
/**
* @var string
*
* @ORM\Column(name="plate", type="string", length=10)
*/
private $plate;
/**
* @var string
*
* @ORM\Column(name="state", type="string", length=2)
* @Assert\Expression(
* "strlen(this.getPlate()) == 0 or (strlen(this.getPlate()) > 0 and strlen(value) == 2)",
* message="Must be 2 characters"
*)
*/
private $state;
를 설명 할 수 나는 오류를 The function "strlen" does not exist around position 1
http://symfony.com/doc/current/reference/constraints/Length.html – Cerad
필드를 비워 둘 수있게하거나 비어 있지 않은 경우 길이가 2 자 여야합니다. 그렇습니까? – jkrnak
네,하지만 다른 속성 "PLATE"에 따라 달라집니다. PLATE가 비어있는 경우 STATE는 비어있을 수도 있지만 PLATE에 길이 (길이> 0)가 있으면 STATE의 길이는 2가되어야합니다 – snoop168