命名空间 [Symfony 4.3] 没有注册路径
There are no registered paths for namespace [Symfony 4.3]
我目前正在构建一个新的捆绑包,当我尝试将该捆绑包中的视图包含到主应用程序(直接位于 /templates 下)的视图中时,出现错误:
There are no registered paths for namespace "ContentEditable" in template.html.twig at line 27.
这里是template.html.twig的相关部分(使用@和/语法):
{% include '@ContentEditable/content-edition.html.twig' %}
这里是a screenshot of my files structure & the return of "bin/console debug:twig"
编辑1
我的 /config/bundles.php 包含以下行:
App\Paul\ContentEditableBundle\ContentEditableBundle::class => ['all' => true]
/EDIT1
你知道我做错了什么吗?是否有一些缓存要刷新?为什么 "debug:twig" 甚至不显示我的包?
如果您需要有关代码的更多信息,请告诉我!
提前致谢!
编辑2
由@Cerad 解决
我刚刚更改了名称空间和层次结构。
做了一个"Paul" repo @ 和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
将您的包的模板目录重命名为视图(而不是模板):
src\Paul\ContentEditableBundle\Resources\views
我知道自动 twig 命名空间生成器查找视图目录而不是模板有点违反直觉。我知道有一次有人推动更改捆绑目录布局以匹配有点新的应用程序布局,但我想它仍在进行中。
或者,您可以 register your own custom twig namespace:
# config/packages/twig.yaml
twig:
# ...
paths:
'%kernel.project_dir%/src/Paul/ContentEditableBundle/templates': ContentEditable
这可能会在未来验证您的目录布局。
虽然跑题了,但我会提醒您不要尝试将您的捆绑包的源代码与您的应用程序源代码混合使用,并且一定要避免使用 App 命名空间。很多意想不到的事情可能会发生,尤其是对于自动装配。可能是这样的:
src/
srcx/Paul/ContentEditableBundle/ContentEditableBundle.php
我目前正在构建一个新的捆绑包,当我尝试将该捆绑包中的视图包含到主应用程序(直接位于 /templates 下)的视图中时,出现错误:
There are no registered paths for namespace "ContentEditable" in template.html.twig at line 27.
这里是template.html.twig的相关部分(使用@和/语法):
{% include '@ContentEditable/content-edition.html.twig' %}
这里是a screenshot of my files structure & the return of "bin/console debug:twig"
编辑1
我的 /config/bundles.php 包含以下行:
App\Paul\ContentEditableBundle\ContentEditableBundle::class => ['all' => true]
/EDIT1
你知道我做错了什么吗?是否有一些缓存要刷新?为什么 "debug:twig" 甚至不显示我的包?
如果您需要有关代码的更多信息,请告诉我!
提前致谢!
编辑2
由@Cerad 解决
我刚刚更改了名称空间和层次结构。
做了一个"Paul" repo @ 和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
将您的包的模板目录重命名为视图(而不是模板):
src\Paul\ContentEditableBundle\Resources\views
我知道自动 twig 命名空间生成器查找视图目录而不是模板有点违反直觉。我知道有一次有人推动更改捆绑目录布局以匹配有点新的应用程序布局,但我想它仍在进行中。
或者,您可以 register your own custom twig namespace:
# config/packages/twig.yaml
twig:
# ...
paths:
'%kernel.project_dir%/src/Paul/ContentEditableBundle/templates': ContentEditable
这可能会在未来验证您的目录布局。
虽然跑题了,但我会提醒您不要尝试将您的捆绑包的源代码与您的应用程序源代码混合使用,并且一定要避免使用 App 命名空间。很多意想不到的事情可能会发生,尤其是对于自动装配。可能是这样的:
src/
srcx/Paul/ContentEditableBundle/ContentEditableBundle.php