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


Access to the base_path of a particular Asset directory from a controller

我想从控制器访问特定资产组件目录的base_path (base_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报告列表。

内核-> locateResource ()

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

$this->container->get('kernel')->locateResource('@MyBundle/Resources/public/reports')
使用parameters.yml

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

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

很容易理解,而且完全有意义。

更新

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

读到这里,似乎你应该输入"参数"。所有基础架构参数,这些参数不会真正改变应用程序的行为。我认为这也适用于你的情况:你的应用程序不会根据资产路径改变它的行为,它只需要知道它们在哪里。

所以,我再说一遍,把它们放在参数中。Yml不仅为您提供了一个简单的解决方案,而且还是一个"良好的实践"。