다른 필드에 대해 필드의 제약 조건 주석 유효성을 검사합니다.
<p>Symfony/5.4에 다음 엔터티 클래스가 있습니다.</p>
<pre class="brush:php;toolbar:false;">DoctrineORMMapping을 ORM으로 사용합니다.
SymfonyComponentValidatorConstraints를 Assert로 사용합니다.
수업과제
{
공개 const SALARY_RANGES = [
'빨간색',
'녹색',
없는,
];
/*** @ORMColumn(길이=255, nullable=true)
* @AssertChoice(choices=Assignments::SALARY_RANGES, strict=true)*/
개인용?string $salaryRange;
/*** @ORMManyToOne(targetEntity="Employee", inversedBy="할당")
* @ORMJoinColumn(name="employee_id", referencedColumnName="id", onDelete="CASCADE")*/
개인 ?직원 $employee;
}</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>