Bundle(Symfony 4):无法从YAML加载配置,命名空间问题

时间:2018-03-09 12:21:28

标签: php symfony symfony4

我是Symfony和PHP的新手,我正在尝试创建 Bundle 来实现登录身份验证Web API。

您可以在this stripped down Symfony Application on GitHub内找到Bundle的代码。 Bundle代码在src内。

我已经阅读了很多(如果不是所有)我在这个主题上发现的问题,但我无法解决我的问题:

从控制台启动服务器时,我收到的错误是: 没有扩展程序可以加载“ldap_auth”的配置(在config / packages \ ldap_auth.yaml中)。查找命名空间“ldap_auth”,找不到

在尝试了很多解决方案之后,我无法理解问题所在,我非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您很想了解配置过程。这是可以理解的。这很复杂。为您加载配置文件,然后调用您的扩展/配置。你没有明确地加载它们。

您可能会看到某些文件正在被扩展程序加载,但这些文件用于定义服务而不是配置。

解决方案是从您的扩展程序中删除加载程序内容:

// LdapAuthExtension
public function load(array $configs, ContainerBuilder $container)
{
    $configuration = $this->getConfiguration($configs, $container);
    $config = $this->processConfiguration($configuration, $configs);

    // *** Remove these lines
    //$loader = new YamlFileLoader( $container,
      //  new FileLocator('config/packages')
    //);
    //$loader->load('ldap_auth.yaml');

    if ($config['app_id']) {
        $container->setParameter('ldap_auth.app_id', $config['app_id']);
    }
}

顺便说一下,使用一个完整的非工作示例链接到github存储库使得这很容易出错。希望更多人这样做。