在使用Symphony项目时,需要一些常用的twig,经过自己做的几个项目,自己的总结如下:
一、twig-数据判断
有时候在使用后台传给前台数据时需要判断是否有这个值,(是否为空(”或null)或是否定义defined或is empty)
例如:
多维数组时:
{% if item.image is defined %}
<div class=”trade-show-imgs”>
{% for img in item.image %}
{% if img != “” %}
<div class=”trade-show-box”>
<img class=”small-img” src=”{{ asset(‘image/member/order/’) }}{{ img }}” alt=”” title=”” />
</div>
{% endif %}
{% endfor %}
</div>
{% endif %}

  

 
二、拼接url(一种是路由path,一种是路径asset),使用replace()转换
var dataid = data[i].id;
var dataimg = data[i].brand_image;
var idurl = “{{ path(‘zm_member_myCar_choose_series’,{‘id’:’dataId’})}}”;
idurl = idurl.replace(“dataId”,dataid);
var idimg = “{{ asset(‘image/brand/’) }}{{ ‘dataImg’ }}”;
idimg = idimg.replace(“dataImg”,dataimg);

  

三、后台传的是多维数组,且第一维数组中是A,B,C,F,G,R等字母,其中包含数组
如图所示:
{% for key,item in result %}
<div class=”lettlecity”>
<div class=”lettletitle”>{{ key }}</div>
{% for items in item %}
<a href=”{{ path(‘zm_frontend_set_city’,{‘id’:items.id}) }}” class=”lettlebox”>{{ items.name }}</a>
{% endfor %}
</div>
{% endfor %}

  

四、twig路由
1.最简单的:{{ path(‘zm_frontend_index_search’) }}
2.带ajax的: {{ path(‘zm_member_address_info_ajax’) }}
3.拼接id的:{{ path(‘zm_member_order_show’,{‘id’:review_info[‘id’]}) }}
4.拼接Id 和type的:{{path(‘zm_member_favorites_action_ajax’,{‘id’:’storeid’,’type’:1})}}
5.带排序的:<a class=”” href=”{{ url }}&order=grade&{% if filter.sort == “DESC” %}sort=ASC{%else%}sort=DESC{%endif%}”>好评</a>
6.搜索在url中拼接(?和&):href=”{{ path(‘zm_frontend_store_list’) }}?manufacturer_id={{ manufacturers.id }}{% if filter.district_id != ” %}&district_id={{ filter.district_id }}{% endif %}”
 
五、将后台传来的数据,转换另一种格式
(1)、{{ data.market_price |number_format }}元(如89.00转换为89)
(2)、提取需要长度的字符串 {{ app.session.get(‘city_name’)[0:2] }}(如北京市提取出北京)
(3)、文章格式输出 {{ data.content |raw }}
(4)、日期格式(如2015-8-23 11:20:45) {{orderlists[‘date_added’] |date(‘Y-m-d’)}}&nbsp;{{orderlists[‘date_added’] |date(‘H:i:s’)}}
 
六、{% set  %} 设置变量
{% if reply is defined %}{% set floor = 2 %}
{% for item in reply %}
<p class=”message-floor”>{{ floor }}楼</p>
{% set floor = floor+1 %}
{% endfor %}
{% endif %}
七、twig循环-样式不同的(利用loop.index:从1开始)
<div class=”maintenance-men-content”>
{% for storelists in local_master %}
<div {% if loop.index == “1” %}style=”background: #c51a1a”
{% elseif loop.index == “2” %}style=”background: #1a53c5″
{% endif %}class=”maintenance-men-list”></div>
{% endfor %}

  

八、分页
后台一般也写好分页,所有的分页都是一样的,我们前端再定义一个都可以引用到的样式
只需调用{{ render|raw }}即可
九、session
利用session可以获得用户信息(如名称,号码,甚至头像),也可以获得定位的城市
如:
{{ app.session.get(‘member_name’) }}
{{ app.session.get(‘city_name’) }}

  

 
 

twig一些常用的用法总结【原创】的更多相关文章

  1. ansible常用模块用法

    ansible常用模块用法 2015-07-21 10:25 24458人阅读 评论(1) 收藏 举报  分类: Linux(44)   ansible 版权声明:本文为博主原创文章,未经博主允许不得 ...

  2. [转]jQuery的each方法的几种常用的用法

    下面提一下jQuery的each方法的几种常用的用法 复制代码 代码如下:  var arr = [ "one", "two", "three&quo ...

  3. python笔记之常用模块用法分析

    python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...

  4. Anaconda中常用的用法

    Anaconda中常用的用法 conda 是开源包(packages)和虚拟环境(environment)的管理系统. packages 管理: 可以使用 conda 来安装.更新 .卸载工具包 ,并 ...

  5. HTML常用标签用法及实例

    HTML常用标签用法及实例1.<!--1.注释-->2.<!--2.DOCTPYE 声明文档类型-->3.<!--3.a--> <a href="h ...

  6. GNU g++常用编译选项用法

    GNU g++常用编译选项用法 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/30686/showart_1210761.html GCC ...

  7. C++中string常用函数用法总结

    string(s小写)是C++标准库中的类,纯C中没有,使用时需要包含头文件#include<string>,注意不是<string.h>,下面记录一下string中比较常用的 ...

  8. Delphi常用关键字用法详解

    本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, ...

  9. hbase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

随机推荐

  1. vue学习笔记之v-for与-repeat

    今天看到一个v-repeat的例子 <body> <ul id="tags"> <li v-repeat="tags"> { ...

  2. canvas滤镜6种效果吗

    昨天写了一个canvas滤镜的取反色效果,今天加一点效果,主要思路都是一样的,改变getImageData.data[]的值,并返回 代码如下: <!DOCTYPE html> <h ...

  3. Java Integer的底层优化

    看一个程序(腾讯题) public class showMain { public static void main(String[] args){ //Double i1=127.00,i2=127 ...

  4. ocp 1Z0-051 141题---感觉有问题

    141. View the Exhibit and examine the structure of CUSTOMERS and GRADES tables. You need to display ...

  5. Linux设备驱动中的并发控制

    1.并发是指多个执行单元同时.并行的执行.并发的执行单元对共享资源的访问很容易导致竞态. 在 Linux 内核中,主要的竞态发生于如下几种情况: ①对称多处理器(SMP)的多个 CPU ②单CPU内进 ...

  6. VaildForm 自定义提示消息

    ValidForm插件提供了7种提示效果,其中有四种自定义效果,具体访问地址:http://validform.rjboy.cn/demo.html 个人偏爱其中两种,即 l 提示效果四:[自定义提示 ...

  7. QB资料学习.01

    1.多数据集的读取 A.取数SQL的配置,借用TStringList进行存储多个不同的取数SQL B.DBA取数:  DBA.ReadMultipleDataSet(TStringList) C.结果 ...

  8. 制造业如何基于BPM做供应链管理?

    公司介绍深圳市吉祥腾达科技有限公司是中国网络产业的开航者,是中国无线网络领域的首批开拓者之一.历经10年的开拓创新,已经形成了拥有自主研发的全面产品线. 为了使公司物流.资金流和信息流实现优化整合,腾 ...

  9. Maven配置中scope说明

    Maven环境搭建完成后,需要去pom.xml文件中配置相关使用的jar架包. 如上图,架包选定之后需要配置对应的scope属性,下面来简单说下这些属性选项的含义: 1. compile,缺省值,适用 ...

  10. Bean property '**DAO' is not writable or has an invalid setter method

    ApplicationContext.xml中配置有问题,里面的bean的属性名称写错了. ApplicationContext.xml中写的是loginDAO,在java类里配置的bean却写成了l ...