cari

Rumah  >  Soal Jawab  >  teks badan

Sahkan anotasi kekangan medan terhadap medan lain

<p>Saya mempunyai kelas entiti ini dalam Symfony/5.4:</p> <pre class="brush:php;toolbar:false;">gunakan DoctrineORMMapping sebagai ORM; gunakan SymfonyComponentValidatorConstraints sebagai Assert; Tugasan kelas { const awam GAJI_RANGKA = [ 'Merah', 'Hijau', null, ]; /*** @ORMColumn(panjang=255, nullable=true) * @AssertChoice(choices=Assignments::SALARY_RANGES, strict=true)*/ persendirian ?rentetan $gajiJulat; /*** @ORMManyToOne(targetEntity="Pekerja", inversedBy="tugasan") * @ORMJoinColumn(name="employee_id", referencedColumnName="id", onDelete="CASCADE")*/ swasta ?Pekerja $pekerja; }</pre> <p>Saya perlu memastikan bahawa jika pekerja tidak batal, maka julat gaji mempunyai nilai bukan batal dan begitu juga sebaliknya. Adakah mungkin untuk menggunakan anotasi kekangan untuk menguatkuasakan keperluan ini?</p> <p>Saya telah cuba menggunakan @AssertCallback tetapi saya tidak dapat mengetahui cara untuk mendapatkan nilai medan lain. Mungkin ia bukan alat yang betul. </p> <pre class="brush:php;toolbar:false;">/*** @AssertCallback({"ExampleValidator", "assertEmployeeOnlyCallback"})*/</pre> <pre class="brush:php;toolbar:false;">public static function assertEmployeeOnlyCallback(mixed $data, ExecutionContextInterface $context): batal { // `$data` mengandungi nilai daripada `salaryRange` tetapi, di manakah `pekerja`? }</pre> <p><br /></p>
P粉321676640P粉321676640534 hari yang lalu594

membalas semua(1)saya akan balas

  • P粉107991030

    P粉1079910302023-07-24 10:28:57

    Ikuti dokumentasi sahaja.

    https://symfony.com/doc/5.3/reference/constraints/Callback.html

    class Author
    {
        // ...
        private int $field = 1;
        private string $otherField;
       /**
        * @Assert\Callback
        */    
        public function validate(ExecutionContextInterface $context, mixed $payload): void
        {
            
            if ($this->field > 1 && $this->otherField != '') {
                $context->buildViolation('Your validation message')
                    ->atPath('toherField')
                    ->addViolation();
            }
        }
    }

    balas
    0
  • Batalbalas