从控制器访问特定Asset目录的base_path

时间:2015-08-12 09:34:16

标签: php symfony symfony-2.7

我想从控制器访问特定Asset component目录的base_pathbase_url已注册),以便将我的报告存储到config.yml中预先配置的特定路径。 / p>

升级到 Symfony 2.7 后,我开始更改配置,如下所示:

应用/配置/ config.yml

framework:
    assets:
        version: 'v5'
        version_format: '%%s?version=%%s'
        base_path: ~
        base_urls: ['http://cdn.example.com', 'https://secure.example.com']
        packages:
           reports:
             base_path: bundles/mybundle

因此,当我使用正确的请求参数请求特定路由时,我的控制器从特定的Twig模板生成HTML,最后,它将使用{{3}转换为PDF }}

最后,我的目的是建立一个可从公共资产目录访问的生成的PDF报告列表。

$内核级> locateResource()

但是,我可以使用以下解决方法访问完整路径:

$this->container->get('kernel')->locateResource('@MyBundle/Resources/public/reports')

使用parameters.yml

我还要求提供一些提示,使用parameters.yml来管理资产组件配置似乎是合法的。因此,从控制器,可以使用$this->getParameter()访问它们,同时作为Asset的配置值。

1 个答案:

答案 0 :(得分:1)

最简单的处理方法是将其定义为parameters.yml中的参数,正如您自己建议的那样。

获得它真的很容易,而且完全有道理。

更新

我想为我的回答提供更多推理,所以我会引用http://symfony.com/doc/current/best_practices/configuration.html作为参考。

在那里阅读,似乎你应该把所有基础设施参数放入“parameters.yml”中,这些参数并没有真正改变你的应用程序行为。我认为这也适用于您的情况:您的应用程序不会根据资产路径更改其行为,它只需要知道它们的位置。

所以,再说一遍,我会说把它们放在parameters.yml中不仅为你提供了一个简单的解决方案,而且它也是一个“好习惯”。