Điểm:1

Tạo chủ đề cho bảng EntityListBuilder.php bằng cách sử dụng drupal/examples/content_entity_example làm cơ sở

lá cờ nr

Bất kỳ ý tưởng nào về cách tôi có thể sử dụng tệp twig mô-đun tùy chỉnh của riêng mình để tạo chủ đề cho bảng của mình?

Tôi đang sử dụng drupal/examples -> content_entity_example làm điểm bắt đầu:

trong content_entity_example.module triển khai hook_theme, tôi muốn trả lại tất cả các trường như:


/**
 * @tập tin
 * Chứa Drupal\content_entity_example\content_entity_example.module.
 */

/**
 * @defgroup content_entity_example Ví dụ: Thực thể nội dung
 * @ingroup ví dụ
 * @{
 * Thực hiện một thực thể nội dung.
 *
 * Mô-đun này thể hiện việc triển khai một thực thể nội dung.
 *
 * API thực thể là API lưu trữ các phần nội dung và cấu hình cho
 * Lõi Drupal. Chẳng hạn, nếu bạn đã gặp các loại nội dung nút, bạn đã
 * đã gặp các thực thể thuộc loại 'nút.'
 *
 * Ví dụ này triển khai API thực thể để chúng tôi có thể sử dụng một loại thực thể
 * bởi người dùng mà bạn có thể coi là các nút chuyên dụng, nhưng đó là
 * khác với các nút. Các thực thể này được gọi là Liên hệ và được biết đến
 * bên trong theo tên máy content_entity_example_contact.
 *
 * Liên hệ là một thực thể nội dung có thể nhập trường được sử dụng để chứa thông tin có cấu trúc
 * mà không cần sử dụng loại nội dung nút. 'Fieldable' có nghĩa là bạn có thể
 * đính kèm các trường vào nó, giống như bạn có thể làm với các nút. Nó được định nghĩa theo chương trình
 * (hoàn toàn bằng mã). Chúng tôi sẽ chỉ ra các kỹ thuật chính để xử lý và phơi bày
 * nội dung của loại thực thể này.
 *
 * Thực thể Liên hệ sẽ trình bày các nhiệm vụ chính cho một thực thể:
 * - định nghĩa
 * - tiết kiệm
 * - trọng tải
 * - lượt xem
 * - chỉnh sửa
 * - xóa bỏ
 * - kiểm soát truy cập
 *
 * Bất cứ khi nào có thể, chúng tôi sử dụng các công cụ tuyệt vời được tích hợp sẵn trong D8.
 *
 * @see Drupal\content_entity_example\Entity\Contact
 * @xem config_entity_example
 * }
 */

/**
 * Triển khai hook_theme(). Đăng ký triển khai chủ đề của mô-đun hoặc chủ đề.
 */

hàm content_entity_example_theme() {
  trở lại [
    'content_entity_example_table' => [
      'biến' => [
        'tiêu đề' => NULL,
        'hàng' => NULL,
        'chân trang' => NULL,
        'thuộc tính' => [],
        'chú thích' => NULL,
        'nhóm' => [],
        'dính' => SAI,
        'đáp ứng' => ĐÚNG,
        'trống rỗng' => ''
      ],
    ],
  ];
}

Và trong src/Entity/Controller/ContactListBuilder.php tôi muốn chọn mẫu của mình ( '#template' ...)

Vì vậy, tôi muốn nói với render() cho người dùng mẫu của tôi

  /**
   * {@inheritdoc}
   *
   * Chúng tôi ghi đè ::render() để chúng tôi có thể thêm nội dung của riêng mình phía trên bảng.
   * parent::render() là nơi EntityListBuilder tạo bảng bằng cách sử dụng
   * triển khai buildHeader() và buildRow().
   */
  chức năng công cộng kết xuất () {
    $build['description'] = [
      '#markup' => $this->t('Ví dụ thực thể nội dung triển khai mô hình Danh bạ. Các liên hệ này là các thực thể có thể nhập trường. Bạn có thể quản lý các trường trên <a href="@adminlink">trang quản trị Danh bạ</a> .', [
        '@adminlink' => $this->urlGenerator->generateFromRoute('content_entity_example.contact_settings'),
      ]),
    ];
    $build['table'] = parent::render();

// TODO thêm tham chiếu mẫu

    trả lại bản dựng $;
  }

và như vậy, hãy sử dụng tệp mẫu của tôi trong /templates/content-entity-example.html.twig mà sẽ được thay đổi trong một giai đoạn sau. (chỉ cần tải nó lên)

{#
/**
 * @tập tin
 * Ghi đè chủ đề để hiển thị một bảng.
 *
 * Các biến có sẵn:
 * - thuộc tính: Thuộc tính HTML để áp dụng cho thẻ <table>.
 * - chú thích: Một chuỗi được bản địa hóa cho thẻ <caption>.
 * - colgroups: Nhóm cột. Mỗi nhóm chứa các thuộc tính sau:
 * - thuộc tính: Thuộc tính HTML để áp dụng cho thẻ <col>.
 * Lưu ý: Drupal hiện chỉ hỗ trợ một dòng tiêu đề của bảng, xem
 * https://www.drupal.org/node/893530 và
 * http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table/7#comment-5109.
 * - header: Các ô tiêu đề của bảng. Mỗi ô chứa các thuộc tính sau:
 * - thẻ: Tên thẻ HTML sẽ sử dụng; 'th' hoặc 'td'.
 * - thuộc tính: Thuộc tính HTML để áp dụng cho thẻ.
 * - nội dung: Một chuỗi được bản địa hóa cho tiêu đề của cột.
 * - field: Tên trường (bắt buộc để sắp xếp cột).
 * - sắp xếp: Thứ tự sắp xếp mặc định cho cột này ("asc" hoặc "desc").
 * - dính: Cờ cho biết có sử dụng tiêu đề bảng "dính" hay không.
 * - rows: Các hàng của bảng. Mỗi hàng chứa các thuộc tính sau:
 * - thuộc tính: Thuộc tính HTML để áp dụng cho thẻ <tr>.
 * - dữ liệu: Các ô của bảng.
 * - no_striping: Cờ cho biết hàng sẽ nhận được không
 * Kiểu dáng 'chẵn/lẻ'. Mặc định là FALSE.
 * - cells: Các ô trong bảng của hàng. Mỗi ô chứa các khóa sau:
 * - thẻ: Tên thẻ HTML sẽ sử dụng; 'th' hoặc 'td'.
 * - thuộc tính: Bất kỳ thuộc tính HTML nào, chẳng hạn như "colspan", để áp dụng cho
 * ô bảng.
 * - nội dung: Chuỗi để hiển thị trong ô của bảng.
 * - active_table_sort: Một giá trị boolean cho biết ô có đang hoạt động hay không
         sắp xếp bảng.
 * - footer: Các hàng ở cuối bảng, có cùng định dạng với biến rows.
 * - trống: Thông báo sẽ hiển thị thêm một hàng nếu bảng không có
 * bất kỳ hàng nào.
 * - no_striping: Một giá trị boolean cho biết hàng sẽ không bị sọc.
 * - header_columns: Số cột trong tiêu đề.
 *
 * @xem template_pre process_table()
 */
#}
<bảng{{ thuộc tính }}>
  {% nếu phụ đề %}
    <caption>{{ caption}}</caption>
  {% endif %}

  {% cho nhóm trong nhóm %}
    {% nếu colgroup.cols %}
      <colgroup{{ colgroup.attributes }}>
        {% cho col trong colgroup.cols %}
          <col{{ col.attributes }} />
        {% endfor %}
      </colgroup>
    {% khác %}
      <colgroup{{ colgroup.attributes }} />
    {% endif %}
  {% endfor %}

  {% nếu tiêu đề %}
    <thead>
    <tr>
      {% cho ô trong tiêu đề %}
      {%
        đặt cell_classes = [
        ô.active_table_sort ? 'đang hoạt động',
      ]
      %}
      <{{ cell.tag }}{{ cell.attributes.addClass(cell_classes) }}>
      {{- ô.nội dung -}}
    </{{ cell.tag }}>
    {% endfor %}
    </tr>
    </thead>
  {% endif %}

  {% nếu hàng %}
    <tbody>
    {% cho hàng trong hàng %}
      {%
        đặt row_classes = [
        không no_striping? chu kỳ (['lẻ', 'chẵn'], loop.index0),
      ]
      %}
    <tr{{ row.attributes.addClass(row_classes) }}>
      {% cho ô trong hàng.cells %}
        <{{ cell.tag }}{{ cell.attributes }}>
        {{- ô.nội dung -}}
        </{{ cell.tag }}>
      {% endfor %}
      </tr>
    {% endfor %}
    </tbody>
  {% khác nếu trống %}
    <tbody>
    <tr class="odd">
      <td colspan="{{ header_columns }}" class="thông báo trống">{{ trống }}</td>
    </tr>
    </tbody>
  {% endif %}
  {% nếu chân trang %}
    <chân>
    {% cho hàng ở chân trang %}
    <tr{{ row.attributes }}>
      {% cho ô trong hàng.cells %}
        <{{ cell.tag }}{{ cell.attributes }}>
        {{- ô.nội dung -}}
        </{{ cell.tag }}>
      {% endfor %}
      </tr>
    {% endfor %}
    </tfoot>
  {% endif %}
</bảng>

content_entity_example hoạt động tốt nhưng tôi không thể tải mẫu của riêng mình.

apaderno avatar
lá cờ us
Mã không rõ phương thức nào đang gọi `parent::render()`, vì chúng ta không biết đâu là lớp cha.
Điểm:0
lá cờ cn

Nó phải đơn giản như việc thiết lập #chủ đề trên bàn mà cha mẹ :: kết xuất () trả về:

$build = parent::render();
$build['table']['#theme'] = 'content_entity_example_table';
user14409370 avatar
lá cờ nr
cảm ơn, tệp twig của tôi được gọi, nhưng nếu tôi thực hiện {{ kint(header) }} trong twig tùy chỉnh của mình, nó sẽ trống. Nếu tôi tắt chức năng theme() của mình, chủ đề drupal mặc định sẽ được gọi có tiêu đề. vì vậy tôi cho rằng chức năng theme() tùy chỉnh của mình không được định cấu hình đúng cách. Tôi dường như không thể tìm thấy tài liệu cho các cài đặt chính xác.
4uk4 avatar
lá cờ cn
`$build['table']['#theme'] = 'table__content_entity_example';` được định nghĩa trong theme() là `'base hook' => 'table'`.

Đă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.