Не удается найти шаблон Symfony 4

#php #symfony #twig

#php #symfony #twig

Вопрос:

Когда я обновился с Symfony 3.4 до Symfony 4 и отобразил систему в браузере, появилась следующая ошибка.
Изменение каталога views — это большая работа, и я не хочу делать это как можно чаще. Есть ли какой-нибудь хороший способ?
Код ошибки

 Unable to find template "AhiSpAdminBundle:Security:login.html.twig" (looked into: /home/vagrant/Symfony/src/Sp/AppBundle/Resources/views, /home/vagrant/Symfony/templates, /home/vagrant/Symfony/vendor/symfony/twig-bridge/Resources/views/Form).
 

Код
framework.yaml

 framework:
    templating:
        engines: ['twig']
 

twig.yaml

 twig:
    paths: ['%kernel.project_dir%/src/App/AppBundle/Resources/views']
    debug: '%kernel.debug%'
    strict_variables: '%kernel.debug%'
 

SecurityController.php

     /**
     * @Route("/login")
     * @Template("SpAppBundle:Security:login.html.twig")
     */
    public function loginAction(Request $request)
    {
 

Версия
Symfony 4.0
PHP 7.3
twig / twig 2.14
twig / templating 4.0
sensio / framework-дополнительный пакет 5.2.4

Комментарии:

1. Привет, вы пытались очистить кэш: bin / console cache: очистить?

2. Symfony отошел от обозначения двоеточия для указания шаблонов twig, т.е. SpAppBundle:Security:login.html.twig должно быть что-то вроде @SpApp/Security/login.html.twig. bin/console debug:twig подтвердит правильное пространство имен twig для использования. Конечно, преобразование путей к вашим шаблонам также требует немалой работы. Вы можете попробовать добавить путь к ветке. Прошло некоторое время с тех пор, как я это сделал. Рассмотрите возможность обновления вашего вопроса списком пространств имен twig, созданных debug:twig

3. @GrenierJ Спасибо за ваш комментарий. Конечно, я передал его.

4. @Cerad Спасибо за ваш комментарий. Благодаря простому для понимания объяснению я смог решить проблему.

Ответ №1:

Установка пути к twig.yaml и сопутствующие изменения сработали.

twig.yaml

 twig:
    paths:
        '%kernel.project_dir%/src/Sp/AppBundle/Resources/views': SpApp
 

Контроллер

     /**
     * @Route("/login")
     * @Template("@SpApp/Security/login.html.twig")
     */
    public function loginAction(Request $request)
    {
 

~.html.twig

 {% extends '@SpApp/layout.html.twig' %}