php模板引擎 smarty笔记

Smarty的标签都是使用定界符括起来。 默认定界符是{  }, 但定界符可以被改变


注释: {* 这是一个注释 *}
 
   
 
变量:
模板变量以美元符号$开头,由字母、数组和下划线组成,和  PHP variable 相似。 变量可以引用数字索引或非数字索引的数组,对象的属性和方法等。不过,配置变量是例外。
配置文件 获取的变量,可以通过 井号引用起来访问如 #hash_marks# , 或者通过Smarty变量 $smarty.config 来访问。 后者在使用其他属性或者是访问别的变量值时比较有用,如$smarty.config.$foo。
<pre name="code" class="php">{$Name}

{$product.part_no} <b>{$product.description}</b>

{$Contacts[row].Phone}

<body bgcolor="{#bgcolor#}">
 
 

从PHP赋值的变量 以美元符号 ( $ ) 开头。
PHP 代码:
<?php

$smarty = new Smarty();

$smarty->assign('firstname', 'Doug');
$smarty->assign('lastname', 'Evans');
$smarty->assign('meetingPlace', 'New York');

$smarty->display('index.tpl');

?>
index.tpl 模板源码:
Hello {$firstname} {$lastname}, glad to see you can make it.
<br />
{* this will not work as $variables are case sensitive *}
This weeks meeting is in {$meetingplace}.
{* this will work *}
This weeks meeting is in {$meetingPlace}.
输出:
Hello Doug Evans, glad to see you can make it.
<br />
This weeks meeting is in .
This weeks meeting is in New York.

数组赋值, 可以通过点号“.”来使用赋值的数组变量。

<?php
$smarty->assign('Contacts',
    array('fax' => '555-222-9876',
          'email' => 'zaphod@slartibartfast.example.com',
          'phone' => array('home' => '555-444-3333',
                           'cell' => '555-111-1234')
                           )
         );
$smarty->display('index.tpl');
?>
index.tpl 模板代码:
{$Contacts.fax}<br />
{$Contacts.email}<br />
{* you can print arrays of arrays as well *}
{$Contacts.phone.home}<br />
{$Contacts.phone.cell}<br />
输出:
555-222-9876<br />
zaphod@slartibartfast.example.com<br />
555-444-3333<br />
555-111-1234<br />

数组下标, 你可以通过下标来使用数组,和PHP语法一样。
<?php
$smarty->assign('Contacts', array(
                           '555-222-9876',
                           'zaphod@slartibartfast.example.com',
                            array('555-444-3333',
                                  '555-111-1234')
                            ));
$smarty->display('index.tpl');
?>
index.tpl 模板代码:
{$Contacts[0]}<br />
{$Contacts[1]}<br />
{* you can print arrays of arrays as well *}
{$Contacts[2][0]}<br />
{$Contacts[2][1]}<br />
输出:
555-222-9876<br />
zaphod@slartibartfast.example.com<br />
555-444-3333<br />
555-111-1234<br />

从PHP赋值的 对象 的属性和方法,可以通过 -> 来使用。

name:  {$person->name}<br />
email: {$person->email}<br />
输出:
name:  Zaphod Beeblebrox<br />
email: zaphod@slartibartfast.example.com<br />


双引号中嵌入变量:

1、Smarty可以识别出在双引号中嵌套的 变量,这些变量名称必须只包括 字母、数字和下划线。 参见命名规则

2、另外,带有其他字符的,如点号(.)或者 $object->reference形式的变量, 必须用`单引号`括起来。

3、Smarty3中允许在双引号中嵌入Smarty的标签并运行。 如果你需要在双引号的变量上使用修饰器、插件或者PHP函数等,这是非常有用的。


避免Smarty解析

有时候部分模板中的代码是不需要或者不希望被Smarty解析的, 比较典型的例子是嵌入在页面HTML中的Javascript或CSS代码。 问题通常发生在这些语言会经常使用{ 和 },但{ 和 }也恰好是Smarty的 定界符

避免被解析的一个良好方式,是分离你的Javascript/CSS代码到单独的文件中, 然后在HTML中引入它们。而且这样也有利于浏览器进行缓存。 当你需要嵌入Smarty的变量或者函数到Javascript/CSS中,请参考下面的方式:

Smarty模板中,当{ 和 }定界符两边都是空格的时候,将会被自动忽略解析。 此特性可以通过设置Smarty的成员变量  $auto_literal 为false来关闭。

<script>
   // 下面的定界符两边都是空格,所以可以被自动忽略解析
   function foobar {
	alert('foobar!');
   }
   // 下面需要手动忽略解析
   {literal}
	function bazzy {alert('foobar!');}
   {/literal}
</script>

{literal}..{/literal}可以让块中间的内容忽略Smarty的解析。 在需要使用定界符的时候,可以通过 {ldelim}{rdelim}标签,或者 {$smarty.ldelim},{$smarty.rdelim}的变量来使用。

Smarty的默认定界符{ 和 }可以整齐地界定一般内容的显示。 然而你可以通过修改Smarty的$left_delimiter  $right_delimiter 的变量值,设置更适合的定界符。

Note: 修改定界符会影响到全部模板代码和解析,请确保在修改前已清除了全部的缓存和编译文件。

好的,关于Smarty模板引擎的学习笔记,我可以为您提供以下内容: 1. Smarty是什么? Smarty是一个用PHP编写的模板引擎,它将PHP代码与HTML代码分离,使得代码更易于维护和设计。Smarty使用一套模板标签来代替PHP代码,这些标签可以在模板中使用,以生成最终的HTML代码。 2. Smarty的优势 - 简单易用:Smarty模板标签简单易懂,可以快速上手。 - 分离代码:SmartyPHP代码与HTML代码分离,使得代码更易于维护和设计。 - 可扩展性:Smarty支持插件机制,可以方便地扩展和定制功能。 - 性能优化:Smarty支持缓存机制,可以提高页面加载速度。 3. Smarty的基本语法 Smarty模板标签由大括号包围,例如:{tag}。以下是Smarty的一些基本标签: - 输出变量:{$variable} - 条件语句:{if $variable == 'value'}{/if} - 循环语句:{foreach $array as $key => $value}{/foreach} - 引入文件:{include file="filename.tpl"} 4. Smarty的高级功能 - 模板继承:Smarty支持模板继承,可以减少模板重复代码。 - 插件机制:Smarty支持插件机制,可以方便地扩展和定制功能。 - 缓存机制:Smarty支持缓存机制,可以提高页面加载速度。 - 自定义函数:Smarty支持自定义函数,可以方便地扩展其功能。 以上是我为您提供的Smarty模板引擎学习笔记,希望对您有所帮助。如果您有其他问题,欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值