Valider l'annotation de contrainte d'un champ par rapport à un autre champ
P粉321676640
2023-07-23 17:52:28
<p>J'ai cette classe d'entité dans Symfony/5.4 :</p>
<pre class="brush:php;toolbar:false;">utiliser DoctrineORMMapping comme ORM ;
utilisez SymfonyComponentValidatorConstraints comme Assert ;
devoirs de classe
{
public const SALARY_RANGES = [
'Rouge',
'Vert',
nul,
];
/*** @ORMColumn(longueur=255, nullable=true)
* @AssertChoice(choices=Assignments::SALARY_RANGES, strict=true)*/
private ?string $salaryRange;
/*** @ORMManyToOne(targetEntity="Employé", inversedBy="assignments")
* @ORMJoinColumn(name="employee_id", referencedColumnName="id", onDelete="CASCADE")*/
privé ?Employé $employé;
}</pré>
<p>Je dois m'assurer que si l'employé n'est pas nul, alors salaireRange a une valeur non nulle et vice versa. Est-il possible d'utiliser des annotations de contrainte pour appliquer cette exigence ?</p>
<p>J'ai essayé d'utiliser @AssertCallback mais je n'arrive pas à comprendre comment obtenir la valeur de l'autre champ. Ce n'est peut-être même pas le bon outil. </p>
<pre class="brush:php;toolbar:false;">/*** @AssertCallback({"ExampleValidator", "assertEmployeeOnlyCallback"})*/</pre>
<pre class="brush:php;toolbar:false;">fonction statique publique assertEmployeeOnlyCallback(mixed $data, ExecutionContextInterface $context): void
{
// `$data` contient la valeur de `salaryRange` mais où est `employee` ?
}</pré>
<p><br /></p>
Suivez simplement la documentation.
https://symfony.com/doc/5.3/reference/constraints/Callback.html