1

我想从控制器访问特定资产组件base_path目录的(已注册),以便将我的报告存储到 config.yml 中预配置的特定路径。base_url

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

app/config/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,最后,它将使用KnpSnappyBundle转换为 PDF 。

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

$kernel->locateResource()

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

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

使用参数.yml

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

4

1 回答 1

1

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

很容易得到它,而且完全有道理。

更新

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

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

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

于 2015-08-18T08:21:36.080 回答