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'); } //... }
浙公网安备 33010602011771号