Điểm:1

định tuyến cho khối động cho thực thể tùy chỉnh

lá cờ co

Đối với một thực thể tùy chỉnh, tôi đã tạo một số khối động. Nhưng các khối không được hiển thị. Chúng được đặt trong quản trị/cấu trúc/khối. Dưới đây là một ví dụ về khối 1.

myentity.routing.yml:

myentity.blocks:
  đường dẫn: '/collection/{myentity}'
  mặc định:
    _title: 'Bộ sưu tập thứ'
  yêu cầu:
    _permission: 'truy cập nội dung'
    Myentity: \d+
  tùy chọn:
    thông số:
      sự thật:
        loại: thực thể: myentity
        bó:
            - một

Một phần của src/Plugin/Block:

không gian tên DrupalCorePluginBlock;

sử dụng DrupalCoreBlockBase;

/**
 * Cung cấp khối 'Bộ sưu tập'.
 *
 * @Chặn(
 * id = "bộ sưu tập_khối 1",
 * admin_label = @Translation("Bộ sưu tập: Nội dung"),
 * danh mục = @Translation("Bộ sưu tập của tôi"),
 * context_definitions = {
 * "myentity" = @ContextDefinition("entity:myentity", label = @Translation("Myentity ID"))
 * }
 * )
 */
lớp MyentityBlock1 mở rộng BlockBase {

  /**
   * {@inheritdoc}
   */
  xây dựng chức năng công cộng () {
    $myentity = $this->getContextValue('myentity');
    trở lại [...];
}

Nếu tôi thay thế myentity bằng nút, nó sẽ hoạt động, nhưng đối với một thực thể tùy chỉnh, có lẽ tôi cần xác định thêm điều gì đó. Nhưng cái gì?

Jaypan avatar
lá cờ de
Có lẽ thế này: `$myentity = \Drupal::service('current_route_match')->getParameter('myentity');`
Điểm:3
lá cờ cn
MrD

Bạn có thể đi theo tui Cung cấp các biến bối cảnh toàn cầu. Bạn phải tạo một dịch vụ mới để cung cấp biến ngữ cảnh cho thực thể tùy chỉnh của mình. Bạn có thể sử dụng một số nút thực thể, người dùng, taxonomy_term... vì chúng đã được xác định.

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

  taxonomy_term.taxonomy_term_route_context:
      lớp: Drupal\taxonomy\ContextProvider\TermRouteContext
      đối số: ['@current_route_match']
      thẻ:
        - { tên: 'context_provider' }

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

 /**
   * {@inheritdoc}
   */
  hàm công khai getRuntimeContexts(mảng $unqualified_context_ids) {
    kết quả $ = [];
    $context_definition = EntityContextDefinition::create('taxonomy_term')->setRequired(FALSE);
    giá trị $ = NULL;
    if ($route_object = $this->routeMatch->getRouteObject()) {
      $route_parameters = $route_object->getOption('parameters');

      if (isset($route_parameters['taxonomy_term']) && $term = $this->routeMatch->getParameter('taxonomy_term')) {
        $value = $term;
      }
      elseif ($this->routeMatch->getRouteName() == 'entity.taxonomy_term.add_form') {
        $vocabulary = $this->routeMatch->getParameter('taxonomy_vocabulary');
        $value = Thuật ngữ::create(['vid' => $vocabulary->id()]);
      }
    }

    $cacheability = CacheableMetadata mới();
    $cacheability->setCacheContexts(['route']);

    $context = new Context($context_definition, $value);
    $context->addCacheableDependency($cacheability);
    $result['taxonomy_term'] = $context;

    trả lại kết quả $;
  }

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.