Для пространства имен нет зарегистрированных путей [Symfony 4.3] - PullRequest
1 голос
/ 17 октября 2019

В настоящее время я создаю новый пакет, и когда я пытаюсь включить представление из этого пакета в представление из основного приложения (непосредственно в каталоге / templates), у меня появляется ошибка:

Нет зарегистрированных путей для пространства имен «ContentEditable» в template.html.twig в строке 27.

Здесь описана соответствующая часть template.html.twig (с использованием @ и /синтаксис):

{% include '@ContentEditable/content-edition.html.twig' %}

А вот снимок экрана со структурой моих файлов и возвращением "bin / console debug: twig"

EDIT1

И мой /config/bundles.php содержит строку:

App\Paul\ContentEditableBundle\ContentEditableBundle::class => ['all' => true]

/ EDIT1

Знаете, что я делаю неправильно? Есть ли кеш для обновления? Почему "debug: twig" даже не показывает мой пакет?

Если вам нужна дополнительная информация о коде, пожалуйста, дайте мне знать!

Заранее спасибо!

EDIT2

Решено @ Cerad

И я просто изменил пространство имен и иерархию.

Сделал репо "Paul" на том же уровне, что и src, и сделал корневое пространство имен "Paul".

Для людей, имеющих проблемы с такого рода рефакторингом, не забудьте добавитьчто-то вроде этого в ваш composer.json:

"autoload": {
    "psr-4": {
        "App\\": "src/",
        "Paul\\": "Paul/"
    }
},

и добавить что-то подобное в ваш "services.yaml":

Paul\:
        resource: "../Paul/*"
        exclude: "../Paul/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}"

/ EDIT2

1 Ответ

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

Переименуйте каталог шаблонов вашего пакета в представления (вместо шаблонов):

src\Paul\ContentEditableBundle\Resources\views

Я знаю, что это немного противоречит интуитивному пониманию того, что автоматический генератор пространства имен веток ищет каталог представлений, а не шаблоны. Я знаю, что в какой-то момент была попытка изменить макет каталога комплекта, чтобы он соответствовал несколько новому макету приложения, но я думаю, что это все еще в стадии разработки.

В качестве альтернативы, вы могли бы зарегистрировать свойсобственное пространство имен веток :

# config/packages/twig.yaml
twig:
    # ...
    paths:
        '%kernel.project_dir%/src/Paul/ContentEditableBundle/templates': ContentEditable        

Возможно, это послужит основой для вашей разметки каталогов в будущем.

И, хотя и не по теме, я бы предостерег от попыток смешать исходный код вашего пакета с вашимисточник приложения и определенно избегайте использования пространства имен приложения. Много неожиданных вещей может произойти, особенно с AutoWire. Может быть что-то вроде:

src/
srcx/Paul/ContentEditableBundle/ContentEditableBundle.php

...