Validieren Sie die Einschränkungsanmerkung eines Felds anhand eines anderen Felds
P粉321676640
2023-07-23 17:52:28
<p>Ich habe diese Entitätsklasse in Symfony/5.4:</p>
<pre class="brush:php;toolbar:false;">DoctrineORMMapping als ORM verwenden;
Verwenden Sie SymfonyComponentValidatorConstraints als Assert;
Klassenzuweisungen
{
öffentliche Konstante SALARY_RANGES = [
'Rot',
'Grün',
Null,
];
/*** @ORMColumn(length=255, nullable=true)
* @AssertChoice(choices=Assignments::SALARY_RANGES, strict=true)*/
privat ?string $salaryRange;
/*** @ORMManyToOne(targetEntity="Employee", inversedBy="assignments")
* @ORMJoinColumn(name="employee_id", referencedColumnName="id", onDelete="CASCADE")*/
privat ?Mitarbeiter $Mitarbeiter;
}</pre>
<p>Ich muss sicherstellen, dass, wenn „employee“ nicht null ist, „salaryRange“ einen Wert ungleich null hat und umgekehrt. Ist es möglich, Einschränkungsanmerkungen zu verwenden, um diese Anforderung durchzusetzen?</p>
<p>Ich habe versucht, @AssertCallback zu verwenden, kann aber nicht herausfinden, wie ich den Wert des anderen Felds ermitteln kann. Vielleicht ist es nicht einmal das richtige Werkzeug. </p>
<pre class="brush:php;toolbar:false;">/*** @AssertCallback({"ExampleValidator", "assertEmployeeOnlyCallback"})*/</pre>
<pre class="brush:php;toolbar:false;">öffentliche statische Funktion affirmEmployeeOnlyCallback(mixed $data, ExecutionContextInterface $context): void
{
// „$data“ enthält den Wert von „salaryRange“, aber wo ist „employee“?
}</pre>
<p><br /></p>
只需按照文档进行操作。
https://symfony.com/doc/5.3/reference/constraints/Callback.html