Переменная доступа в шаблоне Twig пользовательского модуля Drupal 8 - PullRequest
2 голосов
/ 16 октября 2019

Я хочу использовать переменную в файле Twig Drupal 8. И эта переменная ветки должна быть доступна для всех страниц сайта.

Предположим, у меня есть переменная $my_variable, созданная в моей форме илив контроллере. так что теперь я хочу использовать это $my_variable в моем файле ветки.

Like this {{ my_variable }}. 

Я уже пробовал этот подход:

получить $ tempstore внутри файла ветки drupal 8

Файл моего модуля:

function my_module_theme() {
    return [
        'theme_tag' => [
        'variables' => ['my_variable' => NULL],
        ],
    ];
}

Мой контроллер:

public function callMe() {
     $my_variable= "some data here";
     return [
          '#theme' => 'theme_tag',
          '#my_variable' => $my_variable,
     ];
}

Моя веточка:

<p> {{ my_variable}} </p>

любая помощь будет оценена. Спасибо!

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Полный тестовый модуль с шаблоном, созданным на git hub, вы также можете это проверить. https://github.com/nassernak/drupal8-custom-template

Вам необходимо определить путь шаблона ветки

'path' => $path . '/templates',
'template' => 'twig-template-file-name',

$path -> обратиться к каталогу вашего модуля

templates -> - это папка, содержащая ваши шаблоны

template -> просто имя файла без расширения, в моем случае без .html.twig.


В целом, определите вашу тему какэто и установите вашу переменную в массиве переменных.

   function your_module_name_theme($existing, $type, $theme, $path) {
      return [
        'theme_tag' => [
          'variables' => [
            'var2' => NULL,
            'var2' => NULL,
          ],
          'path' => $path . '/templates',
          'template' => 'twig-template-file-name-without-extention',
        ],
      ];
    }

Затем в вашей функции обратного вызова, которая будет ссылаться на ваш шаблон, используйте этот пример.

public function basePageCallback() {
    return [
      '#theme' => 'theme_tag',
      '#var1' => 'test',
      '#var2' => 'test2',
    ];

И затем получите доступ к нему по вашей ветке {{var1}}

0 голосов
/ 16 октября 2019

Создайте файл ветки в mymodulename/templates/my-template-name.html.twig

<div>{{ my_variable }}</div>

Затем добавьте hook_theme в mymodulename.module:

function mymodulename_theme($existing, $type, $theme, $path) {
  return [
    'my_template_name' => [
      'variables' => [
        'my_variable' => 'default value',
      ],
    ],
  ];
}

Шаблон вызова:

  // Call the mail template
  $template = [
    '#theme' => 'my_template_name',
    '#my_variable' => 'my variable value',
  ];
  // Render the template
  $rendered_template = \Drupal::service('renderer')->render($template);

  return ['#markup' => $rendered_template];
...