Любая идея, как я мог бы использовать свой собственный файл ветки пользовательского модуля для темы моей таблицы?
Я использую drupal/examples -> content_entity_example в качестве отправной точки:
в content_entity_example.module, реализующем hook_theme, я хотел бы вернуть все поля, такие как:
/**
* @файл
* Содержит Drupal\content_entity_example\content_entity_example.module.
*/
/**
* @defgroup content_entity_example Пример: Объект содержимого
* @ingroup примеры
* @{
* Реализовать объект контента.
*
* Этот модуль демонстрирует реализацию объекта контента.
*
* Entity API — это API, в котором хранятся фрагменты контента и конфигурации для
* Ядро друпала. Например, если вы столкнулись с типами содержимого узла, вы
* обнаружены объекты типа «узел».
*
* В этом примере реализован Entity API, поэтому у нас есть пригодный для использования тип сущности.
* пользователем, которые вы могли бы считать специализированными узлами, но которые
* отличается от узлов. Эти сущности называются Контактами и известны
* внутренне по имени машины content_entity_example_contact.
*
* Контакт — это полевой объект контента, используемый для хранения структурированной информации.
* без накладных расходов на использование типа содержимого узла. «Полевой» означает, что вы можете
* прикрепить к нему поля, как вы можете с узлами. Это определяется программно
* (полностью в коде). Мы покажем основные приемы обработки и разоблачения
* содержимое этого типа сущности.
*
* Сущность Контакт продемонстрирует основные задачи для сущности:
* - определять
* - спасти
* - нагрузка
* - Посмотреть
* - редактировать
* - удалять
* - контроль доступа
*
* Там, где это возможно, мы используем потрясающие инструменты, изначально встроенные в D8.
*
* @см. Drupal\content_entity_example\Entity\Contact
* @см. config_entity_example
* }
*/
/**
* Реализует hook_theme(). Зарегистрируйте реализацию темы модуля или темы.
*/
функция content_entity_example_theme() {
возвращаться [
'content_entity_example_table' => [
'переменные' => [
'заголовок' => NULL,
'строки' => NULL,
'нижний колонтитул' => NULL,
'атрибуты' => [],
'заголовок' => NULL,
'колгруппы' => [],
'липкий' => ЛОЖЬ,
'отзывчивый' => ИСТИНА,
'пусто' => ''
],
],
];
}
И в src/Entity/Controller/ContactListBuilder.php я хотел бы забрать свой шаблон ('#template'...)
Итак, я хотел бы сообщить пользователю render() мой шаблон
/**
* {@inheritdoc}
*
* Мы переопределяем ::render(), чтобы можно было добавить собственное содержимое над таблицей.
* parent::render() — это место, где EntityListBuilder создает таблицу, используя наш
* Реализации buildHeader() и buildRow().
*/
публичная функция рендеринга () {
$сборка['описание'] = [
'#markup' => $this->t('Пример объекта контента реализует модель контактов. Эти контакты являются полевыми объектами. Вы можете управлять полями на <a href="@adminlink">странице администрирования контактов</a> .', [
'@adminlink' => $this->urlGenerator->generateFromRoute('content_entity_example.contact_settings'),
]),
];
$build['table'] = parent::render();
// TODO добавить ссылку на шаблон
вернуть $сборку;
}
и поэтому используйте мой файл шаблона в /templates/content-entity-example.html.twig
который будет изменен на более позднем этапе. (просто нужно его загрузить)
{#
/**
* @файл
* Переопределение темы для отображения таблицы.
*
* Доступные переменные:
* - атрибуты: атрибуты HTML для применения к тегу <table>.
* - заголовок: Локализованная строка для тега <caption>.
* - colgroups: группы столбцов. Каждая группа содержит следующие свойства:
* - атрибуты: атрибуты HTML для применения к тегу <col>.
* Примечание. В настоящее время Drupal поддерживает только одну строку заголовка таблицы, см.
* https://www.drupal.org/node/893530 и
* http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table/7#comment-5109.
* - заголовок: Ячейки заголовка таблицы. Каждая ячейка содержит следующие свойства:
* - тег: имя HTML-тега для использования; либо «th», либо «td».
* - атрибуты: атрибуты HTML для применения к тегу.
* - содержимое: локализованная строка для заголовка столбца.
* - поле: Имя поля (обязательно для сортировки столбцов).
* - sort: порядок сортировки по умолчанию для этого столбца ("по возрастанию" или "по убыванию").
* - sticky: Флаг, указывающий, следует ли использовать "липкий" заголовок таблицы.
* - rows: Строки таблицы. Каждая строка содержит следующие свойства:
* - атрибуты: атрибуты HTML для применения к тегу <tr>.
* - данные: ячейки таблицы.
* - no_striping: Флаг, указывающий, что строка не должна получать
* 'четный/нечетный' стиль. По умолчанию ЛОЖЬ.
* - ячейки: ячейки таблицы строки. Каждая ячейка содержит следующие ключи:
* - тег: имя HTML-тега для использования; либо «th», либо «td».
* - атрибуты: любые атрибуты HTML, такие как "colspan", для применения к
* ячейка таблицы.
* - содержимое: строка для отображения в ячейке таблицы.
* - active_table_sort: логическое значение, указывающее, является ли ячейка активной
сортировка таблицы.
* - нижний колонтитул: строки нижнего колонтитула таблицы в том же формате, что и переменная rows.
* - пусто: сообщение для отображения в дополнительной строке, если в таблице нет
* любые ряды.
* - no_striping: логическое значение, указывающее, что строка не должна подвергаться чередованию.
* - header_columns: количество столбцов в заголовке.
*
* @см. template_preprocess_table()
*/
#}
<таблица{{ атрибуты }}>
{% если заголовок %}
<caption>{{ заголовок }}</caption>
{% конец%}
{% для colgroup в colgroups %}
{% если colgroup.cols %}
<colgroup{{ colgroup.attributes }}>
{% для столбца в colgroup.cols %}
<col{{ col.attributes }} />
{% конец для %}
</colgroup>
{% еще %}
<colgroup{{ colgroup.attributes }} />
{% конец%}
{% конец для %}
{% если заголовок %}
<thead>
<tr>
{% для ячейки в заголовке %}
{%
установить cell_classes = [
cell.active_table_sort ? 'активен',
]
%}
<{{ cell.tag }}{{ cell.attributes.addClass(cell_classes) }}>
{{- cell.content -}}
</{{cell.tag }}>
{% конец для %}
</tr>
</thead>
{% конец%}
{% если строки %}
<тело>
{% для строки в строках %}
{%
установить row_classes = [
не no_striping ? цикл(['нечетный', 'четный'], loop.index0),
]
%}
<tr{{ row.attributes.addClass(row_classes) }}>
{% для ячейки в row.cells %}
<{{cell.tag}}{{cell.attributes}}>
{{- cell.content -}}
</{{cell.tag }}>
{% конец для %}
</tr>
{% конец для %}
</tbody>
{% иначе, если пусто %}
<тело>
<tr class="нечетный">
<td colspan="{{ header_columns }}" class="пустое сообщение">{{ пустое }}</td>
</tr>
</tbody>
{% конец%}
{% если нижний колонтитул %}
<tfoot>
{% для строки в нижнем колонтитуле %}
<tr{{ row.attributes }}>
{% для ячейки в row.cells %}
<{{cell.tag}}{{cell.attributes}}>
{{- cell.content -}}
</{{cell.tag }}>
{% конец для %}
</tr>
{% конец для %}
</tfoot>
{% конец%}
</таблица>
content_entity_example отлично работает, но я не могу загрузить свой собственный шаблон.