1つのフィールドが空でない(長さ> 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