我在Symfony 4中制作了一个捆绑包,但是在捆绑包中我使用了FOSUserBundle。 因此,我想从我自己的捆绑包而不是从主配置定义FOSUserBundle的配置。怎么做 ?无法识别该节点
没有扩展能够加载“ fos_user”的配置(在C:\ wamp64 \ www \ MyProject \ src \ CMSBundle \ DependencyInjection /../ Resources / config \ fos_user.yaml中)。寻找名称空间“ fos_user”,没有找到
如果我在CMSExtension.php中加载FOSUserBundle的配置(FOS \ UserBundle \ DependencyInjection / Configuration.php)
我收到此消息
必须配置路径“ fos_user”的子节点“ db_driver”。
结构
/src
/CMSBundle
/Controller
/DependencyInjection
CMSExtension.php
/Entity
/Repository
/Resources
/config
fos_user.yaml
routing.yaml
security.yaml
services.yaml
CMSBundle.php
src / CMSBundle / DependencyInjection / CMSExtension.php
class CMSExtension extends Extension {
public function load(array $configs, ContainerBuilder $container) {
$loader = new YamlFileLoader(
$container,
new FileLocator(__DIR__ . '/../Resources/config')
);
$loader->load('services.yaml');
$loader->load('security.yaml');
$loader->load('fos_user.yaml');
}
}
src / CMSBundle / Resourcers / config / fos_user.yaml
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: src\CMSBundle\Entity\User
from_email:
address: "%mailer_user%"
sender_name: "%mailer_user%"
答案 0 :(得分:1)
在您的CMSExtension
类中,您可以实现PrependExtensionInterface
并添加一个prepend
方法。
在这种方法中,您将能够覆盖FOSUserBundle配置:
/**
* {@inheritdoc}
*/
public function prepend(ContainerBuilder $container)
{
$newConfig = [
'db_driver' => '',
...
];
$container->prependExtensionConfig('fos_user', $newConfig);
}
在Symfony文档中查找this page。