twig调用PHP函数,php – 如何在Symfony2 Twig模板中调用静态函数
您无法在twig模板中直接调用PHP.您需要创建一个过滤器或函数来执行您正在查找的内容.
$twig = new Twig_Environment($loader, $params);
$twigFunction = new Twig_SimpleFunction('MyStaticClass', function($method) {
MyStaticClass::$method
});
$twig->addFunction($twigFunction);
然后在你的树枝模板中做:
{{ MyStaticClass('getData') }}
当然,上面的例子假设MyStaticClass在你的任何地方的范围内.
Symfony示例
您必须创建一个树枝扩展.示例如下:
namespace PurpleNeve\Web\PNWebBundle\Extensions;
use PurpleNeve\Web\PNWebBundle\DependencyInjection\CurrencyConverter;
class TwigCurrency extends \Twig_Extension
{
private $converter;
public function __construct(CurrencyConverter $converter)
{
$this->converter = $converter;
}
public function getName()
{
return 'currency';
}
public function getFilters()
{
return array(
'convertCurrency' => new \Twig_Filter_Method($this, 'getConversionBetween')
);
}
public function getConversionBetween($amount, $isoFrom, $isoTo="USD")
{
try {
$value = $this->converter->convertAmount($amount, $isoFrom, $isoTo);
return round($value,2);
} catch(\Exception $e) {
return "?";
}
}
}
这是我创建的一个扩展示例,用于将货币从一种货币转换为另一种货币.
要实现它,您需要在services.yml中为它创建一个服务对象
parameters:
currency_converter.class: PurpleNeve\Web\PNWebBundle\DependencyInjection\CurrencyConverter
services:
currency_converter:
class: "%currency_converter.class%"
arguments : [@doctrine.orm.entity_manager]
twig.extension.currency:
class: PurpleNeve\Web\PNWebBundle\Extensions\TwigCurrency
tags:
- { name: 'twig.extension' }
arguments : [ @currency_converter ]
然后如上所述,在twig中我可以使用{{convertCurrency(55505,’CAD’,’USD)}}调用该类和函数
twig调用PHP函数,php – 如何在Symfony2 Twig模板中调用静态函数相关推荐
- HTML调用Java函数或语句,在动态THML语句中调用JS函数传递带空格参数的问题
刚刚遇到一个问题,调用js函数的参数里带空格,造成调用失败的问题. 部分代码如下: html+=" "; //name中如果有空格就是调用失败 html+=" " ...
- r语言中调用c 程序,如何在R程序包中调用C函数
程序包名称为pareto.这是.c文件中src目录:如何在R程序包中调用C函数 #include #include #include "Rinternals.h" #include ...
- 如何在HTML文档中调用Python程序?
如何在HTML文档中调用Python程序? 简介: 前几天突然遇到这样的一个需求,在html页面中调用python程序对图像进行处理,之后将处理后的图像重新显示在页面中.刚开始还不知道html页面 ...
- Matlab函数打包为.jar后在java中调用出现错误:Exception:com.mathworks.toolbox.javabuilder.MWException: An error occur
Matlab函数打包为.jar后在java中调用出现错误:Exception:com.mathworks.toolbox.javabuilder.MWException: An error occur ...
- python 修改模板对象的属性_django小技巧之html模板中调用对象属性或对象的方法...
环境:依赖最初test2数据库 python3版本 多python版本环境 进入,python3虚拟环境,新建项目test4: ]# cd py3/django-test1/ ]# django-ad ...
- python把模块装到文件夹中_把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案...
把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功 解决办法是: 在该文件夹下加入空文件__init__.py python2会把 ...
- dede taglist模板中调用自定义字段
dede taglist模板中调用自定义字段 [field:id runphp="yes"]global $dsql; $query = "SELECT 自定义字段 FR ...
- 帝国cms:评论列表模板中调用热门文章或是推荐文章的js方法
后台管理评论模板里有评论的列表模板,想在评论列表模板中调用热门文章或是推荐文章,现在考虑到标签和js. 长知识:动态模板无法使用标签,所以标签在这里就pass了,专心搞js----> 1.后台= ...
- php调用会员刷卡,dedecms模板中调用会员信息标签的方法
dedecms模板中调用会员信息标签的方法 比如你想在DEDE首页或者内页里调用会员:用户名.昵称.性别.会员等级.注册邮箱.会员级别等信息.就需要我们本篇教程提供的调用标签了. 首先,我们打开文件 ...
最新文章
- 5G NGC — 会话管理模型 — 边缘业务本地分流
- ontological 词根词缀_英语中最常见的词缀(一)之 re
- 210板wince键盘驱动分析和移植
- 李洋疯狂C语言之有关“you are come from shanghai”逆序(二)
- C++|Qt最简单的http的get请求
- angular4获得焦点事件_深究AngularJS——如何获取input的焦点(自定义指令)
- iOS学习——ViewController(六)
- TPU原理技术与xPU
- linux下加载so文件
- layui编辑器上传图片
- 从苏宁电器到卡巴斯基(第二部)第09篇:我在卡巴的日子 IX
- 变邻域搜索(VNS)原理梳理和应用细节-附求解VRPTW问题C++代码
- C语言 动态内存分配
- windows 磁盘被写保护怎么办
- 日常交通工具日语词汇
- Shamir门限秘密共享方案 秘密分配及还原过程详解 【橘小白】
- CSS面试须知--关于图片
- Scratch课程设计(四)
- Python:统计正负数个数
- 减少AWS费用的一些边边角角
热门文章
- 1 WoWmapview:魔兽世界地形查看器,附带源码!(Author: ufoz)
- VMware 与 SmartX 超融合 I/O 路径对比与性能影响解析
- 单容水箱液位pid控制实验报告_单容水箱液位过程控制实验报告
- heidisql linux 安装_CentOS mysql GUI图形化数据库管理工具Heidisql的安装教程
- 如何在本地进行微信公众号的开发和调试
- 老师的礼物,教师说课教育培训PPT模板
- 【笔记】图片两种常用的存储方式 以及 如何转换通道 :B C H W 、 B H W C
- 如何将视频做成gif动图?
- 题目十:从字符串2中找出字符串1中的所有字符并按ASCII排序
- 四六级来源这些国外期刊杂志or网站