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首页或者内页里调用会员:用户名.昵称.性别.会员等级.注册邮箱.会员级别等信息.就需要我们本篇教程提供的调用标签了. 首先,我们打开文件 ...
最新文章
- android 仿微信聊天气泡显示图片,实现仿照微信聊天气泡里显示图片效果的自定义View...
- 把dataframe删掉第一行_python – 从Pandas DataFrame中的所有行中减去第一行
- php static method,php 类方法用static::hello(); 等同于 $this-hello();吗?
- [JavaWeb-Bootstrap]Bootstrap概述
- sql for循环_【赵强老师】什么是PL/SQL?
- 改手机为自动开机的车载导航仪
- IP SAN与IB SAN
- OSPF(七)OSPF特殊区域之NSSA和Totally NSSA详解及配置
- 05.Node.js和浏览器之间的差异
- MAC 访问 Windows 共享文件夹
- 阿里云国际站服务器怎么样
- BCH采用大爆发,支付理念深入人心
- 【嵌入式】——串口实验——实现芯片串口收发数据,按键中断串口发送数据,串口接收数据中断来控制LED亮/灭
- 基于ffmpeg+opengl+opensl es的android视频播放器
- 大数据_——利用hive仓库模拟数据进行日活、日新、留存数据的分析统计(详细代码步骤)
- 计算机学院篮球队英文名称,【体育文化节】计算机学院研究生代表队获得篮球联赛冠军...
- 企业级市场“两马战”:云计算将成重要战场
- Nginx :user nobody
- 电工学简明教程笔记-----第二更 2018 3.11 15:25
- 虹科教您 | 虹科TSN配置软件RELY-TSN-Configurator基本操作指南