我想在 Bundle/Resources/config 中添加一个新的配置文件。我试过以下http://symfony.com/doc/current/cookbook/bundles/extension.html http://symfony.com/doc/current/cookbook/bundles/extension.html,但它没有按预期工作,我得到
没有扩展能够加载配置
“mailbroker_mail_details”
我的文件:
MailbrokerMailDetailsExtension.php
<?php
namespace Mailbroker\MailDetailsBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
class MailbrokerMailDetailsExtension extends Extension
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$loader->load('canonisers.yml');
}
public function getAlias()
{
return 'mailbroker_mail_details';
}
}
配置.php
<?php
namespace Mailbroker\MailDetailsBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
/**
* {@inheritDoc}
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('mailbroker_mail_details');
$rootNode
->children()
->scalarNode('abc')->end()
->end()
;
return $treeBuilder;
}
}
canonisers.yml
mailbroker_mail_details:
abc: 123
配置是正确的(当放置在 app/config/config.yml 中时,它会按应有的方式加载),canonisers.yml 已正确加载,但由于某种原因我无法使其协同工作。感谢您的帮助!
好吧,我还没有尝试过,但您应该能够使用 Yaml 扩展直接加载 canonisers.yml 文件并将其添加到配置中。不推荐(绕过应用程序缓存),但它可能有效:
use Symfony\Component\Yaml\Yaml;
class MailbrokerMailDetailsExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$file = __DIR__.'/../Resources/config/canonisers.yml';
$configs = array_merge($configs,Yaml::parse(file_get_contents($file));
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
....
完全未经测试。您可能需要添加到 app/config/config.yml
mailbroker_mail_details: ~
只是为了克服错误消息。没有把握。
让我知道它是否有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)