Score:1

"event_subscriber" เป็นหลักการตั้งชื่อที่สงวนไว้สำหรับบริการหรือไม่ มีแนวทางปฏิบัติตามหรือไม่?

ธง cn

ดังนั้นฉันจึงทำงานในโครงการในวันนี้ และผู้สมัครสมาชิกกิจกรรมที่เราเขียนส่วนที่ดีกว่าของปีที่แล้วตัดสินใจว่าจะไม่เริ่มงานอีกต่อไป นี่คือคำจำกัดความ:

บริการ:
  my_module.event_subscriber:
    คลาส: Drupal\my_module\EventSubscriber\XYZFeeds
    แท็ก:
      - { ชื่อ: event_subscriber }

ฉันทำการดีบั๊กตามปกติ และพบว่าเหตุการณ์ไม่ได้ถูกเพิ่มลงในรีจิสทรี การดีบักเพิ่มเติมพบว่ามีชื่ออยู่ด้วย event_subscriber ทำให้หยิบไม่ได้ ถ้าฉันเปลี่ยนเป็นสิ่งอื่นก็จะใช้งานได้เช่น:

บริการ:
  my_module.my_module_xyz_subscriber:
    คลาส: Drupal\my_module\EventSubscriber\XYZFeeds
    แท็ก:
      - { ชื่อ: event_subscriber }

ฉันไม่พบเอกสารใด ๆ ที่ระบุอย่างชัดเจนว่าคุณไม่สามารถใช้วลีนั้นในชื่อบริการ หลักการเดียวที่ฉันทราบคือต้องนำหน้าชื่อบริการด้วยโมดูลที่มาจากชื่อนั้นเสมอ

มีอะไรเปลี่ยนแปลงจาก D8 เป็น D9 หรือมาจากส่วนประกอบ Symfony Framework ที่เป็นส่วนหนึ่งของ Drupal หรือไม่

Jaypan avatar
de flag
การประกาศบริการของคุณมีลักษณะอย่างไร?
cn flag
@Jaypan อัปเดตคำถามด้วยข้อมูลโค้ดก่อน / หลัง
4uk4 avatar
cn flag
`my_module.event_subscriber` อาจถูกสงวนไว้เนื่องจากมีการใช้งานแล้ว
Score:2
ธง cn

ดูเหมือนจะไม่สงวน/ไม่อนุญาตโดย Drupal หรือ Symfony - สิ่งนี้ใช้ได้ดีสำหรับฉันใน 9.3.13 หลังจากเพิ่มรหัสและสร้างแคชใหม่ (ไม่มีขั้นตอนเพิ่มเติม):

custom_module.services.yml

บริการ:
  custom_module.event_subscriber:
    คลาส: Drupal\custom_module\EventSubscriber\XYZFeeds
    แท็ก:
      - { ชื่อ: event_subscriber }

src/EventSubscriber/XYZFeeds.php

<?php

เนมสเปซ Drupal\custom_module\EventSubscriber;

ใช้ Drupal\Core\Config\ConfigCrudEvent
ใช้ Drupal\Core\Config\ConfigEvents;
ใช้ Symfony\Component\EventDispatcher\EventSubscriberInterface;

คลาส XYZFeeds ใช้ EventSubscriberInterface {

  ฟังก์ชั่นคงที่สาธารณะ getSubscribedEvents () {
    กลับ [
      ConfigEvents::SAVE => 'configSave',
      ConfigEvents::DELETE => 'configDelete',
    ];
  }


  ฟังก์ชั่นสาธารณะ configSave (ConfigCrudEvent $event) {
    $config = $event->getConfig();
    \Drupal::messenger()->addStatus('Saved config: ' . $config->getName());
  }

  ฟังก์ชั่นสาธารณะ configDelete (ConfigCrudEvent $event) {
    $config = $event->getConfig();
    \Drupal::messenger()->addStatus('Deleted config: ' . $config->getName());
  }

}

สิ่งนี้สร้างข้อความที่คาดหวังในการบันทึก/ลบการกำหนดค่า ดังนั้นดูเหมือนว่าปัญหาของคุณน่าจะเป็นปัญหาที่แปลเป็นภาษาท้องถิ่นมากกว่า

แนวคิดหนึ่งสำหรับการดีบักเพิ่มเติมที่นึกถึงคือการตรวจสอบว่าคุณไม่มีรหัสที่กำหนดเอง (หรือแม้แต่ส่วนร่วม) ซึ่งกำลังเปลี่ยนแปลงบริการ หรือแม้กระทั่งลบออก สามารถทำได้โดยใช้ ผู้ให้บริการดังนั้น grep-ing โฟลเดอร์ที่เกี่ยวข้องสำหรับ ผู้ให้บริการ อาจเป็นก้าวแรก

นอกจากนี้ยังควรทดสอบเพื่อเปลี่ยนส่วนแรกของ ID แทนที่จะเป็นส่วนที่สอง เพื่อดูว่าจริงหรือไม่ event_subscriber ที่เป็นสาเหตุของปัญหาหรือสตริงทั้งหมด:

บริการ:
  my_module_test.event_subscriber:
    คลาส: Drupal\my_module\EventSubscriber\XYZFeeds
    แท็ก:
      - { ชื่อ: event_subscriber }

หากเวอร์ชันที่แก้ไขใช้งานได้กับ .event_subscriberอย่างน้อยคุณก็ได้ตัดปัญหานั้นออกไปแล้ว

โพสต์คำตอบ

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