Score:1

การกำหนดเส้นทางสำหรับไดนามิกบล็อกสำหรับเอนทิตีแบบกำหนดเอง

ธง co

สำหรับเอนทิตีที่กำหนดเอง ฉันได้สร้างบล็อกไดนามิกหลายบล็อก แต่บล็อกจะไม่ปรากฏ พวกเขาจะอยู่ใน admin/structure/block ด้านล่างเป็นตัวอย่างของบล็อก 1

myentity.routing.yml:

myentity.blocks:
  เส้นทาง: '/collection/{myentity}'
  ค่าเริ่มต้น:
    _title: 'ของสะสม'
  ความต้องการ:
    _permission: 'เข้าถึงเนื้อหา'
    ความลึกลับ: \d+
  ตัวเลือก:
    พารามิเตอร์:
      ความลึกลับ:
        ประเภท: เอนทิตี: myentity
        กำ:
            - ก

ส่วนของ src/Plugin/Block:

เนมสเปซ DrupalCorePluginBlock;

ใช้ DrupalCoreBlockBase

/**
 * ให้บล็อก 'คอลเลกชัน'
 *
 * @ปิดกั้น(
 * id = "collection_block 1",
 * admin_label = @Translation("ของสะสม: สิ่งของ"),
 * หมวดหมู่ = @Translation("คอลเลกชันของฉัน"),
 * บริบท_definitions = {
 * "myentity" = @ContextDefinition("entity:myentity", label = @Translation("Myentity ID"))
 * }
 * )
 */
class MyentityBlock1 ขยาย BlockBase {

  /**
   * {@inheritdoc}
   */
  สร้างฟังก์ชั่นสาธารณะ () {
    $myentity = $this->getContextValue('myentity');
    กลับ [...];
}

ถ้าฉันแทนที่ myentity ด้วย node มันก็ใช้ได้ แต่สำหรับเอนทิตีแบบกำหนดเอง ฉันอาจต้องกำหนดอะไรเพิ่มเติม แต่อะไร?

Jaypan avatar
de flag
อาจจะเป็น: `$myentity = \Drupal::service('current_route_match')->getParameter('myentity');`
Score:3
ธง cn
MrD

คุณสามารถติดตาม จัดเตรียมตัวแปรบริบทส่วนกลาง. คุณต้องสร้างบริการใหม่เพื่อจัดเตรียมตัวแปรบริบทสำหรับเอนทิตีแบบกำหนดเองของคุณ คุณสามารถใช้โหนดเอนทิตี ผู้ใช้ taxonomy_term... ได้ เนื่องจากกำหนดไว้แล้ว

https://git.drupalcode.org/project/drupal/-/blob/9.3.x/core/modules/taxonomy/taxonomy.services.yml#L7

  taxonomy_term.taxonomy_term_route_context:
      คลาส: Drupal\taxonomy\ContextProvider\TermRouteContext
      อาร์กิวเมนต์: ['@current_route_match']
      แท็ก:
        - { ชื่อ: 'context_provider' }

https://git.drupalcode.org/project/drupal/-/blob/9.3.x/core/modules/taxonomy/src/ContextProvider/TermRouteContext.php#L48

 /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ getRuntimeContexts (อาร์เรย์ $unqualified_context_ids) {
    $ผลลัพธ์ = [];
    $context_definition = EntityContextDefinition::create('taxonomy_term')->setRequired(FALSE);
    $value = โมฆะ;
    ถ้า ($route_object = $this->routeMatch->getRouteObject()) {
      $route_parameters = $route_object->getOption('พารามิเตอร์');

      ถ้า (isset($route_parameters['taxonomy_term']) && $term = $this->routeMatch->getParameter('taxonomy_term')) {
        $value = $เทอม;
      }
      elseif ($this->routeMatch->getRouteName() == 'entity.taxonomy_term.add_form') {
        $vocabulary = $this->routeMatch->getParameter('taxonomy_vocabulary');
        $value = Term::create(['vid' => $vocabulary->id()]);
      }
    }

    $cacheability = ใหม่ CacheableMetadata();
    $cacheability->setCacheContexts(['เส้นทาง']);

    $context = บริบทใหม่($context_definition, $value);
    $context->addCacheableDependency($cacheability);
    $result['taxonomy_term'] = $บริบท;

    ส่งคืนผลลัพธ์ $;
  }

โพสต์คำตอบ

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