从控制器访问特定资产目录的 base_path
Access to the base_path of a particular Asset directory from a controller
我想从控制器访问特定 Asset component 目录的 base_path
(base_url
已注册),以便将我的报告存储到 [=48] 中预先配置的特定路径=].
升级到 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
最后,我的目的是构建一个可从 public 资产目录访问的生成的 PDF 报告列表。
$kernel->locateResource()
但是,我可以使用如下解决方法访问完整路径:
$this->container->get('kernel')->locateResource('@MyBundle/Resources/public/reports')
使用parameters.yml
我也询问了一些提示,使用 parameters.yml
来管理 Asset 组件 配置似乎是合法的。因此,从控制器中,可以使用 $this->getParameter()
访问它们,同时作为 Asset 的配置值。
最简单的处理方法是按照您自己的建议将其定义为 parameters.yml
中的参数。
这真的很容易得到它,而且完全有道理。
更新
我想为我的回答提供更多的推理,所以我将引用 http://symfony.com/doc/current/best_practices/configuration.html 作为参考。
阅读那里,您似乎应该将 "parameters.yml" 所有不会真正改变您的应用程序行为的基础结构参数放入。我认为这也适用于您的情况:您的应用程序不会根据资产路径更改其行为,它只需要知道它们在哪里。
所以,我要说的是,将它们放在 parameters.yml 中不仅为您提供了一个简单的解决方案,而且还是一个 "good practice"。
我想从控制器访问特定 Asset component 目录的 base_path
(base_url
已注册),以便将我的报告存储到 [=48] 中预先配置的特定路径=].
升级到 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最后,我的目的是构建一个可从 public 资产目录访问的生成的 PDF 报告列表。
$kernel->locateResource()
但是,我可以使用如下解决方法访问完整路径:
$this->container->get('kernel')->locateResource('@MyBundle/Resources/public/reports')
使用parameters.yml
我也询问了一些提示,使用 parameters.yml
来管理 Asset 组件 配置似乎是合法的。因此,从控制器中,可以使用 $this->getParameter()
访问它们,同时作为 Asset 的配置值。
最简单的处理方法是按照您自己的建议将其定义为 parameters.yml
中的参数。
这真的很容易得到它,而且完全有道理。
更新
我想为我的回答提供更多的推理,所以我将引用 http://symfony.com/doc/current/best_practices/configuration.html 作为参考。
阅读那里,您似乎应该将 "parameters.yml" 所有不会真正改变您的应用程序行为的基础结构参数放入。我认为这也适用于您的情况:您的应用程序不会根据资产路径更改其行为,它只需要知道它们在哪里。
所以,我要说的是,将它们放在 parameters.yml 中不仅为您提供了一个简单的解决方案,而且还是一个 "good practice"。