フィールドの制約アノテーションを別のフィールドと比較して検証する
P粉321676640
2023-07-23 17:52:28
<p>Symfony/5.4 には次のエンティティ クラスがあります:</p>
<pre class="brush:php;toolbar:false;">DoctrineORMMaping を ORM として使用します。
SymfonyComponentValidatorConstraints をアサートとして使用します。
クラス割り当て
{
public const SALARY_RANGES = [
'赤'、
'緑'、
ヌル、
];
/*** @ORMColumn(長さ=255、nullable=true)
* @AssertChoice(choices=Assignments::SALARY_RANGES, strict=true)*/
プライベート ?文字列 $salaryRange;
/*** @ORMManyToOne(targetEntity="従業員", inversedBy="割り当て")
* @ORMJoinColumn(name="employee_id", ReferencedColumnName="id", onDelete="CASCADE")*/
プライベート ?従業員 $従業員;
}</pre>
<p>employee が null でない場合、salaryRange が null 以外の値を持つこと、またその逆の場合も同様であることを確認する必要があります。制約アノテーションを使用してこの要件を強制することはできますか?</p>
<p>@AssertCallback を使用しようとしていますが、他のフィールドの値を取得する方法がわかりません。もしかしたらそれは適切なツールではないかもしれません。 </p>
<pre class="brush:php;toolbar:false;">/*** @AssertCallback({"ExampleValidator", "assertEmployeeOnlyCallback"})*/</pre>
<pre class="brush:php;toolbar:false;">パブリック静的関数assertEmployeeOnlyCallback(mixed $data, ExecutionContextInterface $context): void
{
// `$data` には `salaryRange` の値が含まれていますが、`employee` はどこにあるのでしょうか?
}</pre>
<p><br /></p>
ドキュメントに従ってください。
https://symfony.com/doc/5.3/reference/constraints/Callback.html
リーリー