[英]Symfony 5 bundle services.yaml - no extension able to load the configuration
我正在尝试为 Symfony 5 创建一个简单的自定义包。我的包结构如下所示:
- SqliteFileBundle
- src
- DependencyInjection
- SqliteFileExtension.php
- Resources
- config
- services.yaml
- Services
- SqliteFileDb.php
- SqliteFileBundle.php
真的很简单,甚至是微不足道的。
SqliteFileExtension.php
:
namespace SqliteFile\Bundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
/**
* SqliteFileExtension
*/
class SqliteFileExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yaml');
}
}
Resources/config/services.yaml
:
sqlite_file.db:
public: true
class: SqliteFile\Bundle\Services\SqliteFileDb
arguments:
$dbPath: "%env(resolve:SQLITE_FILE_DB_PATH)%"
SqliteFileBundle.php
:
namespace SqliteFile\Bundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
/**
* SqliteFileBundle
*/
class SqliteFileBundle extends Bundle
{
}
当我尝试将此捆绑包加载到 Symfony 5 应用程序中时,它失败并显示:
There is no extension able to load the configuration for "sqlite_file.db"
Looked for namespace "sqlite_file.db", found "none".
无论我尝试什么,我都无法让这个微不足道的服务加载或解决这个错误。 如果我取出 YAML 负载,我可以看到捆绑包已加载(但显然什么也没定义,什么也不做)......请问我做错了什么,为什么我不能定义一个简单的服务并让它加载?
编辑:奇怪的是,我可以让它与扩展中的等效 XML 配置和 XML 文件加载器一起使用。 为什么? 为什么YAML版本不行? 如果可能的话,我宁愿使用 YAML 而不是 XML 。
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="sqlite_file.db" class="SqliteFile\Bundle\Services\SqliteFileDb">
<argument key="$dbPath">%env(resolve:SQLITE_FILE_DB_PATH)%</argument>
</service>
<service id="sqlite_file.twig_extension" class="SqliteFile\Bundle\Twig\TwigExtension">
<argument>sqlite_file.db</argument>
</service>
</services>
</container>
哇,我是个白痴。 花了大约 3 个小时追我的尾巴,结果我忘了添加services:
作为我services.yaml
中的根键。 如果错误消息将我指向那个方向会有所帮助,但我所有的谷歌搜索都在告诉我确保我使用的是正确的 snake_cased 包名称,我就是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.