Темизация каждой записи из таблицы БД

Главные вкладки

Аватар пользователя mmjmm mmjmm 18 марта 2022 в 8:55

Подскажите, пожалуйста.
Надо создать в своем кастомном модуле шаблон и передавать в него по одной каждую запись из определенной таблицы БД.
Как это сделать?
Знаю только, что можно собрать в один массив все записи и передавать в файл темизации.
Но мне надо передавать именно по одной записи.

Комментарии

Аватар пользователя mmjmm mmjmm 18 марта 2022 в 9:25

Есть таблица в БД со списком некоторых торговых предложений поставщиков.
Надо создать файл темизации тизера торгового предложения.

Создал файл темизации node--stock-offer--teaser.html.twig
Зарегистрировал в .module эту тему и у нее будет одна переменная stock_offer (она будет содержать все нужные поля из БД по предложению в виде одномерного массива)

Не понимаю, как передавать каждую запись в этот файл темизации, а не сразу массив этих записей.

Аватар пользователя ivnish ivnish 18 марта 2022 в 9:29

Вы опять описываете свои решения.

Напишите какая конкретно стоит задача, например "необходимо вывести то то и то то так то и так то"

Аватар пользователя mmjmm mmjmm 18 марта 2022 в 9:36

В контроллере я обращаюсь к таблице БД и выбираю все записи оттуда:
$query = \Drupal::database()->select('dt_stock_offers', 'dso');

$query->fields('dso', ['stock_offer_id','stock_offer_name','manufacture_year','stock_offer_condition','mileage','price','description','stock_city_name','topicality','comment']); //выборка нужных полей

$result = $query->execute();

Необходимо вывести через файл темизации информацию о торговом предложении из БД:
Вывод так должен выглядеть для каждого предложения.
В итоге на странице выведется совокупность из примера ниже столько раз, сколько есть этих предложений

ID/ЛОТ:{{ stock_offer.stock_offer_id }}


Полное название автомобиля:{{ stock_offer.stock_offer_name }}


Год выпуска:{{ stock_offer.manufacture_year }}


Состояние:{{ stock_offer.stock_offer_condition }}


Пробег:{{ stock_offer.mileage }}


Входящая цена:{{ stock_offer.price }}


Краткие характеристики и комплектация:{{ stock_offer.description }}


Город базирования{{ stock_offer.stock_city_name }}


Актуальность:{{ stock_offer.topicality }}


Дополнительная информация:{{ stock_offer.comment }}

Аватар пользователя mmjmm mmjmm 18 марта 2022 в 12:30

Если объяснять по-другому:
Нужно создать шаблон для некоторого массива, который будет содержать одну запись из таблицы БД.

Например: Есть некоторый тип материала (нода). Для нее можно прописать шаблон, что бы, допустим, выводить поля этой ноды как-то иначе.

А мои данные из БД не являются для Друпала сущностями, как ноды. Но смысл их обработки мне нужен такой же.
И я не знаю, как в этом случае формировать много билд массивов и передавать их в шаблон.

Аватар пользователя mmjmm mmjmm 18 марта 2022 в 13:11

Читал эту статью, не смог понять.
Вы скинули ее, еще раз внимательнее перечитал и да, это работает, теперь все понял, спасибо большое!