Mis*_*iur 10 php configuration symfony
我想在Bundle/Resources/config中添加一个新的配置文件.我已经尝试过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';
}
}
Run Code Online (Sandbox Code Playgroud)
的configuration.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;
}
}
Run Code Online (Sandbox Code Playgroud)
canonisers.yml
mailbroker_mail_details:
abc: 123
Run Code Online (Sandbox Code Playgroud)
配置是正确的(当它放在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);
....
Run Code Online (Sandbox Code Playgroud)
完全未经测试.您可能需要添加到app/config/config.yml
mailbroker_mail_details: ~
Run Code Online (Sandbox Code Playgroud)
只是为了通过错误消息.不确定.
如果有效,请告诉我.
| 归档时间: |
|
| 查看次数: |
8953 次 |
| 最近记录: |