Symfony2 Assetic 从控制器内部获取资产 url,而不是模板

Posted

技术标签:

【中文标题】Symfony2 Assetic 从控制器内部获取资产 url,而不是模板【英文标题】:Symfony2 Assetic get asset urls from inside controller, not template 【发布时间】:2013-03-16 16:37:38 【问题描述】:

我想在控制器中包含我的捆绑包中的一项资产的 URL,而不是在模板中。

更具体地说,但不是很重要:我使用 obHighChartsBundle 制作了一个 HighChart 图表,并且我必须在我正在制作的图表的某些点上绘制一些特殊图标。因此,我需要图标的 url,它位于我的 bundle 的资产文件夹中。

是否可以从控制器调用某种资产管理器并获取此资产的正确 url?

【问题讨论】:

【参考方案1】:

你可以调用($packageName 是可选的):

$this->container->get('assets.packages')->getUrl($path, $packageName);

对于较旧的 Symfony 版本,服务称为 templating.helper.assets,因此您使用:

$this->container->get('templating.helper.assets')->getUrl($path, $packageName);

它的使用方式与twig函数相同(实际上这是在twig函数中调用的)。

【讨论】:

我是否需要一个 use 声明才能以某种方式包含 twig? 我不确定,你在问什么。你不需要树枝就可以让它工作。 我在想资产但写了 twig ;) 但我得到了它的工作。 从 Symfony3 开始:$this->get('assets.packages')->getUrl($path) @Nicolas Bundle 符号由 Assetic 评估,而不是由该解决方案使用的模板组件的资产助手评估。你可以改用$this->container->get('templating.helper.assets')->getUrl('images/navbar_logo.jpg', 'bundles/my/Resources/public') 之类的东西。我没有设置环境来测试这个,但希望你能明白。

以上是关于Symfony2 Assetic 从控制器内部获取资产 url,而不是模板的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 - Assetic - css 字体图标

使用 Assetic / Twig / Symfony2,我可以定义前端库吗?

Symfony2 Assetic + Twig 模板 JavaScript 继承

Symfony2 - Assetic - 在 CSS 中加载图像

Symfony2 Assetic:无法解析节点可执行文件的路径

在 Symfony2 中使用 Compass 和 Assetic 的 Foundation5