【问题标题】:Configuring a Silex-Application with paths using Symfony\Component\DependencyInjection使用 Symfony\Component\DependencyInjection 配置带有路径的 Silex 应用程序
【发布时间】:2012-04-05 13:09:29
【问题描述】:

我目前正在重构一个比最初预期更大的Silex\Application。作为这项工作的一部分,我将服务定义从源代码移动到 services.yml 中,并改为调用 Symfony\Component\DependencyInjection\ContainerBuilder。代码如下所示:

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

$container = new ContainerBuilder();
$loader = new YamlFileLoader($container, new FileLocator(__DIR__));
$loader->load(__DIR__ . '/services.yml');

考虑以下代码行,它是创建Doctrine\ORM\EntityManager 的一部分:

Setup::createAnnotationMetadataConfiguration(array("src/Project/Entity"), true);

在我的 services.yml 中看起来像这样:

services:
    doctrine_config:
        class: Doctrine\ORM\Configuration
        factory_class: Doctrine\ORM\Tools\Setup
        factory_method: createAnnotationMetadataConfiguration
        arguments:
            - [src/Project/Entity]
            - true

最后,我的问题。我想将键和值传递给容器构建器,我可以像参数一样访问它们,例如而不是 [src/Project/Entity] 作为 Doctrine-Setup 的第一个参数我想做这样的事情:[%ROOT_PATH%/src/Project/Entity],其中%ROOT_PATH% 被添加到 ContainerBuilder 有点像这样$container->???('ROOT_PATH', dirname(__DIR__))

我在文档中没有发现类似的内容。我将通读 ContainerBuilder.php 以查看是否可以找到某些内容,但我不确定术语,例如%OOT_PATH% 在我的场景中是否是变量、定义、别名...

【问题讨论】:

    标签: php symfony1 dependency-injection silex


    【解决方案1】:

    自己找到的。

    就像添加一样简单:

    $container->setParameter("ROOT_PATH", dirname(__DIR__));
    

    在我上面的 sn-p 中。

    【讨论】:

      猜你喜欢
      • 2015-08-17
      • 2021-10-15
      • 2013-12-14
      • 1970-01-01
      • 2013-01-18
      • 2017-12-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      相关资源
      最近更新 更多