Score:2

addViolation() เลิกใช้แล้ว: จะแทนที่ได้อย่างไร

ธง sa

วิธีปรับโค้ดต่อไปนี้เพื่อหลีกเลี่ยงการเลิกใช้ เพิ่มการละเมิด () ตาม https://www.drupal.org/node/3238432 ?

คลาส MyValidator ขยาย ConstraintValidator {

  ตรวจสอบฟังก์ชั่นสาธารณะ ($ รายการ, ข้อ จำกัด $ ข้อ จำกัด ) {
    ถ้า (!$this->isValid($items)) {
      $this->context->addViolation($constraint->message); // จะปรับใช้บรรทัดนี้ได้อย่างไร?
    }
  }
}
4uk4 avatar
cn flag
ฉันคิดว่าข้อความเลิกใช้งานเป็นการเตือนที่ผิดพลาด ตรงกันข้ามกับวิธีการที่กล่าวถึงในบันทึกการเปลี่ยนแปลง addViolation() ไม่ถูกทำเครื่องหมายเป็นภายในใน Symfony 6 และถ้า Drupal ลบวิธีนี้ออก ก็จะแทนที่ด้วยรหัส Symfony
Baud avatar
sa flag
ขอบคุณ. นี่หมายความว่ารหัสการเลิกใช้งานถูกเพิ่มเข้าไปในเมธอด addViolation() อย่างไม่ถูกต้อง... ฉันจะบอกว่ามีข้อบกพร่องหลักบางประเภทหรือไม่
4uk4 avatar
cn flag
มันไม่ได้เพิ่มอย่างผิด ๆ แต่เป็นที่ชัดเจนว่าพวกเขาต้องการลบการนำวิธีการนี้ไปใช้ สิ่งนี้ไม่ได้เปลี่ยนการใช้เมธอด แต่จะใช้วิธีเดียวกันใน Symfony
Score:2
ธง us

ไม่จำเป็นต้องเปลี่ยนรหัสที่แสดงในคำถาม: ครั้งเดียว เริ่มใช้คลาส Symfony\Component\Validator\ValidatorBuilder แทนคลาสที่คัดลอก ได้รับการแก้ไขแล้ว $this->บริบท จะไม่มีอินสแตนซ์ของ \Drupal\Core\TypedData\Validation\ExecutionContext แต่ \Symfony\Component\Validator\Context\ExecutionContext.
ดังที่เอกสารระบุ คลาสที่ขยายออกไป ConstraintValidator ควรสันนิษฐานว่า $this->บริบท เป็นการนำวัตถุ ExecutionContextInterfaceไม่ใช่คลาสที่ใช้จริง ด้วยสมมติฐานดังกล่าว การเปลี่ยนแปลงที่แนะนำโดยปัญหานั้นจะไม่ส่งผลต่อคลาสตัวตรวจสอบข้อจำกัด (ยกเว้นข้อความการเลิกใช้งานจะไม่ถูกทริกเกอร์อีกต่อไป)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา