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.