Symfony-如何加载Service配置信息

初学Symfony,如有错误,欢迎指正.

当前版本3.1

  创建一个扩展类:

// src/Acme/HelloBundle/DependencyInjection/AcmeHelloExtension.php
namespace Acme\HelloBundle\DependencyInjection;

use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class AcmeHelloExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container)
    {
        // ... you'll load the files here later
    }
}

  手动注册扩展类

//src/Acme/HelloBundle/AcmeHelloBundle.php
//
... use Acme\HelloBundle\DependencyInjection\AcmeHelloExtension; class AcmeHelloBundle extends Bundle { public function getContainerExtension() { return new AcmeHelloExtension (); } }

  使用load()方法

use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\Config\FileLocator;

// ...
public function load(array $configs, ContainerBuilder $container)
{
//configs就是config.yml里键名为acme_hello的值
  $container->setParameter('acme_hello.zc', $configs[0]['zc']);
$loader = new YamlFileLoader( $container, new FileLocator(__DIR__.'/../Resources/config') ); $loader->load('services.yml'); }
public function getAlias() {        
        return 'acme_hello';//这里对应的是config.yml里的键名
    }

 配置样例

//app/config/config.yml
//...
acme_hello:
    zc: 赵昌

调用

//src/Acme/HelloBundle/Controller/DefaultController.php
//...
class DefaultController extends Controller
{
    /**
     * @Route("/")
     */
    public function indexAction()
    {
       
         var_dump($this->getParameter('acme_hello.zc'));
        
        return $this->render('NlcInformationBundle:Default:index.html.twig');
    }
//...
}

 

posted on 2016-07-19 17:15  Zack86  阅读(373)  评论(0)    收藏  举报

导航