Предложение шаблона формы Drupal - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь создать предложение формы drupal, используя:

function pfe_theme_suggestions_form_alter(array &$suggestions, array $variables) {
    $suggestions[] = 'form__'. $variables['element']['#id'];
}

, но после создания формы - user-login-form.html.twig , drupal не делает 'Этот шаблон не принимается во внимание, но он всегда использует form.html.twig .

Это html-комментарий:

<!-- THEME DEBUG -->
<!-- THEME HOOK: 'form' -->
<!-- FILE NAME SUGGESTIONS:
   * form--user-login-form.html.twig
   x form.html.twig
-->
<!-- BEGIN OUTPUT from 'core/themes/stable/templates/form/form.html.twig' -->

После добавления HOOK_theme ():

function pfe_theme_suggestions_form_alter(array &$suggestions, array $variables) {
   $suggestions[] = 'form__'.$variables['element']['#id']; //form--user-login-form.html.twig
}

function pfe_theme($existing, $type, $theme, $path) {

  return [
    'form__user-login-form' => [
      '#theme' => 'form--user-login-form',
      'render element' => 'form',
    ],
  ];

}

Я получаю эту ошибку:

Twig_Error_Loader: шаблон "themes / pfe / templates / form - user-login-form.html.twig" не определен (Drupal \ Core\ Template \ Loader \ ThemeRegistryLoader: не удается найти шаблон "themes / pfe / templates / form - user-login-form.html.twig" в реестре тем Drupal.).в Twig_Loader_Chain-> getCacheKey () (строка 43 из /home/marwen/workspace/pfe/themes/pfe/templates/block/block--userlogin.html.twig).

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Замените "-" на "_", используя "str_replace", пример:

$suggestions[] = 'form__' . str_replace('-','_', $variables['element']['#id']);
0 голосов
/ 06 июня 2018

Спасибо за добавление вывода отладки!

Очистите все ваши кэши всеми возможными способами.

Первое, что вы всегда должны попробовать, когда это происходит, это очистить все ваши кэши во всех возможныхпути.От кэша Drupal, до кэша браузера, до кэша сервера (Varnish, Akamai и т. Д., Если вы используете что-то подобное).

Добавление пользовательского кода или файлов (шаблонов) в эту тему не допускается.

Следующее, что здесь важно, это то, что вы всегда создаете собственную (под) тему для добавления своих шаблонов.В настоящее время вы используете основную тему Drupal «Стабильный».Это означает, что Drupal теперь будет искать core/themes/stable/templates для form--user-login-form.html.twig.Но добавлять пользовательский код или файлы (шаблоны) в эту тему не стоит.

Почему? Потому что он будет просто сброшен при следующем обновлении Drupal.Или, если бы вы использовали один из доступных шаблонов Composer , он даже не был бы зафиксирован вообще, так как все основные файлы и папки игнорируются из-за контроля версий кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...