Score:0

ผู้สมัครสมาชิกกิจกรรมฟีดหยุดทำงาน

ธง cn

ด้วยเหตุผลบางประการ สมาชิกกิจกรรมฟีดของฉันเพิ่งหยุดทำงาน

รหัสของฉันมีลักษณะเช่นนี้ dpm สำหรับการดีบักไม่เคยถูกไล่ออก ดังนั้นฉันคิดว่าฟังก์ชันนี้ไม่ได้ถูกเรียกใช้

ฉันคิดไม่ออกว่ามีอะไรเปลี่ยนแปลง


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

ใช้ Drupal\feeds\Event\EntityEvent;
ใช้ Drupal\feeds\Event\FeedsEvents
ใช้ Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * ตอบสนองต่อเหตุการณ์ฟีดเพื่อแก้ไขคุณสมบัติของฟีด
 */
Class FeedsSubscriber ใช้ EventSubscriberInterface {

  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นคงที่สาธารณะ getSubscribedEvents () {
    $เหตุการณ์ = [];
    $events[FeedsEvents::PROCESS_ENTITY_PRESAVE][] = 'บันทึกล่วงหน้า';
    $events[FeedsEvents::PROCESS_ENTITY_POSTSAVE][] = 'บันทึกหลัง';

    ส่งคืนเหตุการณ์ $;
  }

  /**
   * ทำหน้าที่ในการอนุรักษ์เอนทิตี
   *
   * @param Drupal\feeds\Event\EntityEvent $event
   * เหตุการณ์ฟีด
   */
  ฟังก์ชั่นสาธารณะ presave (EntityEvent $event) {
    dpm(เหตุการณ์ $);
    // รับวัตถุฟีด
    $feed = $event->getFeed();
    // รับเอนทิตีที่กำลังดำเนินการอยู่
    ถ้า ($feed->type->entity->id() === 'ส่วน') {
      $entity = $event->getEntity();
      // รับเอนทิตีที่ไม่เปลี่ยนแปลง
      $unchanged_entity = \Drupal::entityTypeManager()
        ->getStorage('โหนด')
        ->loadUnchange($entity->id());
      // ตรวจสอบว่าเอนทิตีใหม่หรือไม่
      ถ้า (!$entity->isNew()) {
        // เฉพาะในกรณีที่ไม่ใช่ค่าตรวจสอบใหม่
        ถ้า ($feed->type->entity->label() === 'ส่วน') {
          ถ้า ($entity->get('title')->value === 'empty') {
            $entity->get('title')->value = $unchanged_entity->get('title')->value;
          }

          // ส่วนประกอบ / สร้างฟิลด์
          ถ้า ($entity->get('field_make')->isEmpty()) {
            $makes = $uncanged_entity->get('field_make')->referencedEntities();
            foreach ($ ทำให้เป็น $index => $term) {
              $tid = $term->id();
              ถ้า (ดัชนี $ == 0) {
                $entity->set('field_make', $tid);
              }
              อื่น {
                $entity->get('field_make')->ผนวกรายการ([
                  'target_id' => $tid,
                ]);
              }
            }
          }


          // รหัสกลุ่มส่วน
          ถ้า ($entity->get('field_group_code')->isEmpty()) {
            $codes = $unchange_entity->get('field_group_code')
              ->referencedEntities();
            foreach ($codes เป็น $index => $code) {
              $code_id = $code->id();
              ถ้า (ดัชนี $ == 0) {
                $entity->set('field_group_code', $code_id);
              }
              อื่น {
                $entity->get('field_group_code')->appendItem([
                  'target_id' => $code_id,
                ]);
              }
            }
          }

          // การอ้างอิงโยง.
          ถ้า ($entity->get('field_cross_references')->isEmpty()) {
            $references = $unchange_entity->get('field_cross_references')
              ->referencedEntities();
            foreach ($references เป็น $index => $reference) {
              $reference_id = $reference->id();
              ถ้า (ดัชนี $ == 0) {
                $entity->set('field_cross_references', $reference_id);
              }
              อื่น {
                $entity->get('field_cross_references')->ผนวกรายการ([
                  'target_id' => $reference_id,
                ]);
              }
            }
          }
        }
        elseif ($feed->type->entity->label() === 'แอตทริบิวต์ทางกายภาพ') {
          ถ้า ($entity->get('title')->value === 'empty') {
            $entity->get('title')->value = $unchanged_entity->get('title')->value;
          }
          // น้ำหนักชิ้นส่วน
          ถ้า ($entity->get('field_weight')->isEmpty()) {
            $entity->get('field_weight')->value = $uncanged_entity->get('field_weight')->value;
          }
          // ส่วนสูง
          ถ้า ($entity->get('field_height')->isEmpty()) {
            $entity->get('field_height')->value = $uncanged_entity->get('field_height')->value;
          }
          // ความกว้างของส่วน
          ถ้า ($entity->get('field_width')->isEmpty()) {
            $entity->get('field_width')->value = $uncanged_entity->get('field_width')->value;
          }
          // ความลึกของชิ้นส่วน
          ถ้า ($entity->get('field_ความลึก')->isEmpty()) {
            $entity->get('field_ความลึก')->value = $uncanged_entity->get('field_ความลึก')->ค่า;
          }
        }
      }
    }
  }

  /**
   * ทำหน้าที่ในการอนุรักษ์เอนทิตี
   *
   * @param Drupal\feeds\Event\EntityEvent $event
   * เหตุการณ์ฟีด
   */
  โพสต์ฟังก์ชั่นสาธารณะ (EntityEvent $ เหตุการณ์) {
    $feed = $event->getFeed();
    $feeds = ['oe_references', 'sub_components', 'dimensions'];
    $id = $feed->type->entity->id();
    ถ้า (in_array($id, $ฟีด)) {
      $entity = $event->getEntity();
      $parent_field_name = $entity->parent_field_name->ค่า;
      $parent_id = $entity->parent_id->ค่า;
      $vid = \Drupal::entityTypeManager()->getStorage('node')->getLatestRevisionId($parent_id);
      $part = \Drupal::entityTypeManager()->getStorage('node')->loadRevision($vid);
      $paragraph_references = $part->get($parent_field_name)->referencedEntities();
      $paragraph_references_id = [];
      ถ้า ($paragraph_references) {
        foreach ($paragraph_references เป็น $paragraph_reference) {
          $paragraph_references_id[] = $paragraph_reference->id();
        }
      }
      ถ้า (!in_array($entity->id(), $paragraph_references_id)) {
        $ฟิลด์ = [
          'field_oe_references', 'field_sub_components_', 'field_dimensions'
        ];
        ถ้า (in_array($parent_field_name, $fields)) {
          ถ้า ($ ส่วน) {
            $part->{$parent_field_name}[] = $entity;
            $part->save();
          }
        }
      }
    }
  }

}

ฉันยังมีคำจำกัดความบริการดังนี้

บริการ:
  #ชื่อบริการ.
  parthsub_feeds_modifications_events_subscriber:
    # คลาสสมาชิกเหตุการณ์ที่จะฟังเหตุการณ์
    คลาส: Drupal\partshub_feeds_modifications\EventSubscriber\FeedsSubscriber
    # แท็กเป็น event_subscriber เพื่อลงทะเบียนสมาชิกนี้ด้วยบริการ event_dispatch
    แท็ก:
      - { ชื่อ: event_subscriber }
cn flag
เปิดใช้งานโมดูลที่กำหนดเองด้วยรหัสนี้แล้วใช่ไหม
cn flag
ใช่ :-) แปลกมากเพราะมันใช้งานได้ก่อนหน้านี้ ตรวจสอบพื้นฐานทั้งหมด ล้างแคช ฯลฯ ฉันได้ดูตัวอย่างบางส่วนแล้ว ฉันเห็นชื่อบริการบางอย่างด้วย . ฉันจึงได้ลองเปลี่ยนชื่อบริการเป็น `parthsub_feeds_modifications.events_subscriber` แต่ก็ไม่ได้ผลเช่นกัน
Score:0
ธง cn

ไม่มีคำตอบ ฉันได้รับข้อผิดพลาดในการตรวจสอบก่อนที่ presave จะถูกไล่ออก ซึ่งหมายความว่ารหัสนี้จะไม่ทำงาน

โพสต์คำตอบ

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