我在config.yml移動Symfony2的服務配置捆綁
services:
my.user_provider:
class: Acme\MySecurityBundle\Security\UserProvider
以下,但想動這在我MySecurityBundle/Resources/config
到config.yml但Symfony2的告訴我,該服務不存在時我動它。
如何從中獲取config.yml
文件?
我在config.yml移動Symfony2的服務配置捆綁
services:
my.user_provider:
class: Acme\MySecurityBundle\Security\UserProvider
以下,但想動這在我MySecurityBundle/Resources/config
到config.yml但Symfony2的告訴我,該服務不存在時我動它。
如何從中獲取config.yml
文件?
src/Acme/MySecurityBundle/DependencyInjection/MySecurityExtension.php
:
<?php
namespace Acme\MySecurityBundle\DependencyInjection;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\Config\FileLocator;
class MySecurityExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
}
src/Acme/MySecurityBundle/Resources/config/services.yml
:
services:
my_security.user_provider:
class: Acme\MySecurityBundle\Security\UserProvider
你需要在包稱爲「擴展」,告訴Symfony的做什麼加載軟件包時,創建一個類。命名約定有點奇怪。對於Acme \ MySecurityBundle,該類將被命名爲AcmeMySecurityExtension。它位於{bundlepath}/DependencyInjection中。
這裏是我的一個示例(我加載資源/配置/ services.xml中):
<?php
namespace Acme\MySecurityBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
/**
* This class is automatically discovered by the kernel and load() is called at startup.
* It gives us a chance to read config/services.xml and make things defined there available for use.
* For more information, see http://symfony.com/doc/2.0/cookbook/bundles/extension.html
*/
class AcmeMySecurityExtension extends Extension
{
/**
* Called by the kernel at load-time.
*/
public function load(array $configs, ContainerBuilder $container)
{
/*@var XmlFileLoader*/
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.xml');
}
}
這解決了我的問題。非常感謝。 –