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,而不是模板的主要内容,如果未能解决你的问题,请参考以下文章
使用 Assetic / Twig / Symfony2,我可以定义前端库吗?
Symfony2 Assetic + Twig 模板 JavaScript 继承
Symfony2 - Assetic - 在 CSS 中加载图像