首页 文章

使用Symfony \ Component \ DependencyInjection配置带路径的Silex-Application

提问于
浏览
2

我目前正在重构一个比最初预期更大的 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% 是变量,定义,别名......

1 回答

  • 2

    自己找到了 .

    它就像添加一样简单:

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

    在我上面的代码段中 .

相关问题