如何创建/安装新环境所需的新route_xxx.php文件

时间:2016-06-25 00:24:40

标签: symfony environment

对于我的symfony应用程序,除了现有的“dev”和“prod”之外,我还需要创建一个新的环境“qa”。

我添加了web / app_qa.php,包括......

$kernel = new AppKernel('qa', true);

我在app / config中创建了config_qa.yml和routing_qa.yml。当我试图跑...

app/console server:run --env=qa

我收到一条关于找不到router_qa.php的消息。其他环境(router_dev.php和router_prod.php)的文件位于vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Resources / config中。如果我使用

app/console server:run --env=qa --router=vendor/symfony/.../router_prod.php

(...表示路径的其余部分)然后启动很好。

我的config_qa.yml包含routing_qa.yml的规范,但我无法找到指定router_prod.php的方法。如果我将router_prod.php复制到app / config,启动仍然会抱怨它丢失了。我可以将副本放在symfony供应商树中,但这看起来很糟糕,而且我必须为每个部署制作副本。

有关正确方法的任何建议吗?

我在ubuntu 14.04.4 LTS上运行symfony 2.5.12

1 个答案:

答案 0 :(得分:0)

以下方法很难看,但有效。

  • 我使用How to Master and Create new Environments中的说明生成了web / app_qa.php和app / config / config_qa.yml,如问题中所述。
  • 我添加了app / Resources / config / router_qa.php。这是vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Resources / config / router_prod.php的副本,用'app_qa.php'代替'app.php'
  • 我修改了app / Kernel,添加了以下内容:

    public function locateResource($name, $dir = null, $first = true)
    {
        if ($name == "@FrameworkBundle/Resources/config/router_qa.php")
        {
            return(__DIR__ . "/Resources/config/router_qa.php");
        }
        return(parent::locateResource($name, $dir, $first));
    } 

(毫无疑问,这是一种简单的单线方法,但在阅读symfony docs的几个小时内我无法找到它。)