Php 如何使用Treebuilder在无绑定应用程序中加载自定义配置文件?
我正在尝试导入一个名为test.yaml的自定义配置文件 我将test.yaml放在config/packages/local文件夹和config/packages文件夹中 test.yaml文件如下所示:Php 如何使用Treebuilder在无绑定应用程序中加载自定义配置文件?,php,symfony,symfony4,Php,Symfony,Symfony4,我正在尝试导入一个名为test.yaml的自定义配置文件 我将test.yaml放在config/packages/local文件夹和config/packages文件夹中 test.yaml文件如下所示: # config/packages/test.yaml test1: 'hello' 当我编译应用程序时,我得到了这个错误:“没有扩展能够加载“test1”的配置” 现在你要告诉我,我需要创建和扩展以及blabla。但是我不明白。有没有一种方法可以在不创建捆绑包的情况下创建扩展。我在文档中
# config/packages/test.yaml
test1: 'hello'
当我编译应用程序时,我得到了这个错误:“没有扩展能够加载“test1”的配置”
现在你要告诉我,我需要创建和扩展以及blabla。但是我不明白。有没有一种方法可以在不创建捆绑包的情况下创建扩展。我在文档中找不到任何关于捆绑包范围外扩展的示例。我的意思是我想在src
文件夹中创建它
一个相关的问题是:如果我像本例中那样设置TreeBuilder:
是否可以避免创建扩展
Symfony版本是5.1。几个月前我似乎看到了一个类似的问题,但找不到。src/Kernel类充当AppBundle类,允许您执行注册扩展之类的操作
# src/Kernel.php
class Kernel extends BaseKernel
{
use MicroKernelTrait;
protected function prepareContainer(ContainerBuilder $container)
{
$container->registerExtension(new TestExtension());
parent::prepareContainer($container);
}
...
# src/TestExtension.php
class TestExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
// TODO: Implement load() method.
dump($configs);
}
}
至于在没有扩展的情况下处理树生成器,我不知道这是否可行。配置的东西已经够复杂了,所以我自己不会去那里
有点离题,我找不到在内核中使用prepareContainer的实际文档案例。源代码清楚地表明,上面所示的方法将起作用
大多数情况下,特定于应用程序的配置只是在config目录中完成的。捆绑包配置系统的主要目的是允许应用程序覆盖默认捆绑包配置。我并没有真正看到应用程序级扩展的意义。什么可以覆盖它?可能是某种复杂的数据库驱动树生成器?似乎不太可能
这可能是一个仅仅因为你能做某事并不意味着你应该做某事的例子。似乎我在几个月前看到了一个类似的问题,但找不到它。src/Kernel类充当AppBundle类,允许你做注册扩展之类的事情
# src/Kernel.php
class Kernel extends BaseKernel
{
use MicroKernelTrait;
protected function prepareContainer(ContainerBuilder $container)
{
$container->registerExtension(new TestExtension());
parent::prepareContainer($container);
}
...
# src/TestExtension.php
class TestExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
// TODO: Implement load() method.
dump($configs);
}
}
至于在没有扩展的情况下处理树生成器,我不知道这是否可行。配置的东西已经够复杂了,所以我自己不会去那里
有点离题,我找不到在内核中使用prepareContainer的实际文档案例。源代码清楚地表明,上面所示的方法将起作用
大多数情况下,特定于应用程序的配置只是在config目录中完成的。捆绑包配置系统的主要目的是允许应用程序覆盖默认捆绑包配置。我并没有真正看到应用程序级扩展的意义。什么可以覆盖它?可能是某种复杂的数据库驱动树生成器?似乎不太可能
这可能是因为您可以做某些事情并不意味着您应该做。对于自定义配置文件,我认为您可能需要添加参数:在顶部,如下所示
# config/packages/test.yaml
parameters:
test1: hello
对于自定义配置文件,我认为您可能需要在顶部添加参数:如下所示
# config/packages/test.yaml
parameters:
test1: hello