【问题标题】:Access to the base_path of a particular Asset directory from a controller从控制器访问特定资产目录的 base_path
【发布时间】:2015-08-19 01:00:37
【问题描述】:

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

升级到 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 的配置值。

【问题讨论】:

  • 对不起,如果我遗漏了什么,但您的问题到底是什么?你能让它更突出一点吗?
  • 我需要(从控制器)访问 app/config/config.yml 中定义的base_urls,我想直接访问。类似于getAssets('base_urls')
  • 是的,但您也提供了一些解决方案,它们是不起作用还是您在问最好的解决方案是什么?我在回答中假设后者。
  • 它们可以工作,但我认为最好有办法访问assets 部分的 config.yml 配置。如果您定义不同的子路径,直接检索它们而不在两个不同的 yml 文件中定义是有意义的。

标签: php symfony symfony-2.7


【解决方案1】:

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

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

更新

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

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

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

【讨论】:

  • 正如我在前面的 cmets 中所述,我希望有一种方法可以从控制器操作中访问 assets 路径配置,而无需在 parameters.yml 中定义它们。跨度>
  • 好的。我理解并尊重您的问题,因此我无法提供解决方案。无论如何,我用更多的证据扩展了我的答案:-)
  • 感谢您的更新和澄清。现在我正在使用 parameters.yml 方法。
猜你喜欢
  • 2011-12-11
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
相关资源
最近更新 更多