Symfony 3.4 Extends не работает после миграции

Я сделал миграцию Symfony с версии 2.7 на версию 3.4

Все в порядке, кроме одного. Файлы twig не работают, появляется сообщение об ошибке:

Unable to find template "::layout.html.twig" (looked into: vendor\symfony\symfony\src\Symfony\Bridge\Twig/Resources/views/Form, vendor\knplabs\knp-menu\src\Knp\Menu/Resources/views) in abcdBundle::layout.html.twig at line 3.

Код веточки:

{% extends "::layout.html.twig" %}

Я хочу загрузить локализованный макет на app/Resources/views/layout.thml.twig. Я тоже пробовал этот код: {% extends "layout.html.twig" %} без :: такие же проблемы.

Файлы местоположения:

app/
    Resources/
        views/
            layout.html.twig // it don't find this twig

src/
    ab/
        cdBundle/
            Ressources/
                views/
                    layout.html.twig // error into this file

Пути к шаблону на основе двоеточия больше не поддерживаются по умолчанию. stackoverflow.com/questions/47832977/…

Cerad 04.12.2018 14:53

@Cerad Хорошо, но как решить мою проблему? Я уже видел этот пост. Но я так и не понял, как заставить мою веточку снова заработать.

R3tep 04.12.2018 14:59

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

Cerad 04.12.2018 15:04

@Cerad Я уже добавил конфигурацию шаблонов. Все работало да до миграции. Я пробовал этот код: {% extends "@App/layout.html.twig "%} (с пространством имен), у меня эта ошибка There are no registered paths for namespace" App ".

R3tep 04.12.2018 15:09

Для версии 3.4 я ожидал бы @ AppBundle / layout.html.twig. «bin / console debug: twig» покажет вам доступные пространства имен. Но простой layout.html.twig действительно должен работать. И хотя я подозреваю, что это всего лишь опечатка в вопросе, Ressources написано неправильно. Я знаю, что это может сбивать с толку, потому что в 3.4 поддерживается несколько различных структур каталогов.

Cerad 04.12.2018 15:21

@Cerad Большое спасибо, я нашел решение с вашими источниками.

R3tep 04.12.2018 15:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
492
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я обновил файл config.yml, чтобы добавить:

twig:
    paths:
        '%kernel.project_dir%/app/Resources/views': app

Это добавило @app "Пространство имен" в "Пути загрузчика" bin/console debug:twig

Теперь, когда я использую {% extends "@app/layout.html.twig" %}, он работает нормально.

Спасибо @Cerad за вашу помощь, это очень ценно

Рад, что у тебя все получилось. Просто из любопытства, показывает ли debug: twig пространство имен "(None), которое, возможно, указывает на шаблоны?"

Cerad 04.12.2018 15:44

@Cerad Да! Внизу списка есть «Нет», указывающее на vendor\symfony\symfony\src\Symfony\Bridge\Twig/Resources/vie‌​ws/Form\ . В этом ли причина проблемы?

R3tep 04.12.2018 15:49

Я так думаю. None - это расположение по умолчанию для шаблонов, и в новой структуре каталогов Symfony он указывает на project / templates. Не знаю, почему он указывает на каталог моста Twig. Вы можете попробовать что-нибудь вроде '% kernel.project_dir% / templates': '' и посмотреть, сможете ли вы избавиться от необходимости в пространстве имен приложения. Это также поможет, если вы когда-нибудь перейдете на 4x.

Cerad 04.12.2018 15:59

Если этот путь %kernel.root_dir%/Resources/views действительно существует, он автоматически добавляется к путям Twig (без пространства имен (None)), и поэтому {% extends "layout.html.twig" %} должен работать.

yceruto 05.12.2018 15:22

И каталог моста Twig существует (без пространства имен), потому что он зарегистрирован TwigBundle для легкого поиска / использования / расширения из любого макета темы формы (например, form_div_layout.html.twig).

yceruto 05.12.2018 15:25

Что касается отсутствующего пути %kernel.project_dir%/templates/, необходимо, чтобы каталог существовал для добавления к путям Twig (он применяется для всех путей).

yceruto 05.12.2018 15:30
Ответ принят как подходящий

Если вы хотите сделать свой проект более надежным и готовым к будущим миграциям на Symfony 4 - подумайте о перемещении всего вашего Resources из каталога app/.

Вы можете найти больше, т.е. здесь:

http://fabien.potencier.org/symfony4-directory-structure.html

Другие вопросы по теме