Вызов представления из шаблона

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

Комментарии

Аватар пользователя bumble bumble 25 января 2018 в 19:02
1

Вот для того твиг и придумали - чтоб в нем никто не вызывал ничего.

Препроцессоры - все делается в препроцессорах.

Аватар пользователя negociant negociant 25 января 2018 в 19:14
1

bumble wrote:

Вот для того твиг и придумали - чтоб в нем никто не вызывал ничего

Если нужно, то можно и вьюхи, и блоки выводить, но создав под это дело Twig extension или воспользоваться готовым решением https://www.drupal.org/project/twig_tweak (как выводить)
Речь то не про выполнение кода (логики) прямо в шаблоне и исполнение sql запросов в циклах.

Аватар пользователя bumble bumble 25 января 2018 в 19:21
1

Ну как же не про "выполнение кода (логики) прямо в шаблоне и исполнение sql запросов в циклах"?

views_embed_view - ведь то и делает, что выполняет SQL запрос, и Views - это все про SQL запрос. И все это "работает" из-под рендерющегося шаблона.

Аватар пользователя Andruxa Andruxa 25 января 2018 в 21:02

Формально, 50 на 50 - может выполнить запрос, а может взять результат из кеша.
Но по факту - да, нечего делать вызову вью в шаблоне.

Аватар пользователя negociant negociant 25 января 2018 в 19:47
1

bumble wrote:

views_embed_view - ведь то и делает, что выполняет SQL запрос, и Views - это все про SQL запрос. И все это "работает" из-под рендерющегося шаблона.

Так переменные в шаблон не магическим же способом прилетают, а точно также из БД данные берутся. Я о том, что если нужно что то передать в шаблон, то либо в препроцессе, либо для часто возникающих задач и для динамического вывода нужно создавать Twig extension (функции, фильтры). Или лучше верстальщика заставлять каждый раз в препроцессе создавать переменную и туда записывать отрендеренный вьюс (ведь в препроцессе вьюха магическим образом в обход БД возникает)?

Аватар пользователя bumble bumble 25 января 2018 в 19:48
1

Конечно же не магически, а так же - из БД. Но не на этапе рендера.

Верстальщик - Twig extension с тем же успехом напишет что и в препроцессор.

Аватар пользователя negociant negociant 25 января 2018 в 19:52
1

bumble wrote:

Верстальщик - Twig extension с тем же успехом напишет что и в препроцессор.

Он и не должен - либо программист напишет, либо установить модуль (в своем первом комменте ссылку давал), который создает уже нужные Twig extension-ы под разные задачи.

Аватар пользователя bumble bumble 25 января 2018 в 19:58
1

Лан-лан. Я не против Twig extension.

Мой посыл был про то что твиг помогает делать более "правильную" верстку, препятствуя использованию "неправильных" подходов.

Аватар пользователя negociant negociant 25 января 2018 в 20:10
3

bumble wrote:

Мой посыл был про то что твиг помогает делать более "правильную" верстку, препятствуя использованию "неправильных" подходов.

Но и не стоит забывать, что twig дает возможность вызова функций внутри шаблонов (https://twig.symfony.com/doc/2.x/functions/index.html) и друпал добавляет в ядре еще определенный набор (https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates и некоторые из них, о горе, делают запросы в БД). Но, как в семерке, в twig шаблоне не вызовешь произвольный php код. Вот это и есть правильный подход.