一个优秀模板与一个优秀框架的结合。
首先用Smarty实现View的接口。
Smarty.php:
<?php
/**
* Smarty.php
* Smarty视图类
* created by ranfow(ranfow@qq.com)
* 2008-08-19
*/
require_once 'Zend/View/Interface.php';
require_once 'Smarty/Smarty.class.php';
class Zend_View_Smarty implements Zend_View_Interface
{
/**
* Smarty object
* @var Smarty
*/
protected $_smarty;
/**
* Constructor
*
* @param string $tmplPath
* @param array $extraParams
* @return void
*/
public function __construct($tmplPath = null, $extraParams = array())
{
$this->_smarty = new Smarty;
if (null !== $tmplPath) {
$this->setScriptPath($tmplPath);
}
foreach ($extraParams as $key => $value) {
$this->_smarty->$key = $value;
}
}
/**
* Return the template engine object
*
* @return Smarty
*/
public function getEngine()
{
return $this->_smarty;
}
/**
* Set the path to the templates
*
* @param string $path The directory to set as the path.
* @return void
*/
public function setScriptPath($path)
{
if (is_readable($path)) {
$this->_smarty->template_dir = $path;
return;
}
throw new Exception('Invalid path provided');
}
/**
* Retrieve the current template directory
*
* @return string
*/
public function getScriptPaths()
{
return array($this->_smarty->template_dir);
}
/**
* Alias for setScriptPath
*
* @param string $path
* @param string $prefix Unused
* @return void
*/
public function setBasePath($path, $prefix = 'Zend_View')
{
return $this->setScriptPath($path);
}
/**
* Alias for setScriptPath
*
* @param string $path
* @param string $prefix Unused
* @return void
*/
public function addBasePath($path, $prefix = 'Zend_View')
{
return $this->setScriptPath($path);
}
/**
* Assign a variable to the template
*
* @param string $key The variable name.
* @param mixed $val The variable value.
* @return void
*/
public function __set($key, $val)
{
$this->_smarty->assign($key, $val);
}
/**
* Retrieve an assigned variable
*
* @param string $key The variable name.
* @return mixed The variable value.
*/
public function __get($key)
{
return $this->_smarty->get_template_vars($key);
}
/**
* Allows testing with empty() and isset() to work
*
* @param string $key
* @return boolean
*/
public function __isset($key)
{
return (null !== $this->_smarty->get_template_vars($key));
}
/**
* Allows unset() on object properties to work
*
* @param string $key
* @return void
*/
public function __unset($key)
{
$this->_smarty->clear_assign($key);
}
/**
* Assign variables to the template
*
* Allows setting a specific key to the specified value, OR passing an array
* of key => value pairs to set en masse.
*
* @see __set()
* @param string|array $spec The assignment strategy to use (key or array of key
* => value pairs)
* @param mixed $value (Optional) If assigning a named variable, use this
* as the value.
* @return void
*/
public function assign($spec, $value = null)
{
if (is_array($spec)) {
$this->_smarty->assign($spec);
return;
}
$this->_smarty->assign($spec, $value);
}
/**
* Clear all assigned variables
*
* Clears all variables assigned to Zend_View either via {@link assign()} or
* property overloading ({@link __get()}/{@link __set()}).
*
* @return void
*/
public function clearVars()
{
$this->_smarty->clear_all_assign();
}
/**
* Processes a template and returns the output.
*
* @param string $name The template to process.
* @return string The output.
*/
public function render($name)
{
return $this->_smarty->fetch($name);
}
/**
* Processes a template and display it to the browser.
*
* @param string $name The template to process.
*/
public function display($name)
{
return $this->_smarty->display($name);
}
} |
初始化:
$smarty = new Zend_View_Smarty("./templates", array (
"compile_dir" => "./templates_c",
"cache_dir" => "./cache",
"config_dir" => "./config",
"left_delimiter" => "{{",
"right_delimiter" => "}}"
)); |
模板index.tpl:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{{$title}}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
{{$name}}
</body>
</html> |
赋值、解释并输出:
......
$smarty->title = 'test';
$smarty->name = 'ranfow';
// $smarty->display('index.tpl'); // 这种为直接输出
$rendered = $smarty->render('index.tpl');
echo $rendered;
...... |
分享到:
相关推荐
而Zend Framework则作为整个应用的架构基础,负责处理请求、路由、模型与数据交互,以及视图的渲染(可以与Smarty结合使用)。开发者可以利用Zend Framework的强大功能来构建复杂的业务逻辑,同时使用Smarty来提供...
7. 集成Smarty模板引擎:在index.php中配置Zend Framework的前端控制器,使用setParam方法关闭框架自带的视图渲染器,并将Smarty库文件放置在合适的目录中。 8. 开发视图文件:在模板目录中创建Smarty模板文件,...
总结起来,通过实现`Zend_View_Interface`,我们可以轻松地将Smarty模板引擎整合到Zend Framework项目中,实现视图层的灵活扩展。这种灵活性是Zend Framework设计的一部分,它允许开发者选择最适合他们项目的视图...
本文将详细介绍如何在Zend Framework项目中集成并使用Smarty模板引擎。 #### 二、准备工作 在开始整合之前,请确保已经安装了以下组件: - PHP环境 - Zend Framework - Smarty模板引擎 确保以上环境都已安装完毕...
4. **视图**:通过模板引擎,如 Smarty 或 Zend View,渲染购物车页面,显示商品列表、购物车内容、订单详情等。 5. **数据库交互**:使用 Zend_Db 组件,实现对 MySQL 数据库的操作,创建相应的数据表,如商品表、...
在《zendframework+smarty+ajax经典实例》中,Ajax的应用可能体现在chapter-09.zip和chapter-11.zip,涵盖了如何在Smarty模板中嵌入Ajax代码,以及如何与Zend Framework的控制器交互,实现实时数据交换。 此外,...
【描述】"最近项目要用Zend Framework,在网上找了很多资料才配置好,虽然有很多不足,但还是发出来分享一下。" 配置多模块多模板的Zend Framework并不简单,通常需要对MVC(模型-视图-控制器)架构有深入理解。...
- **模块化设计**:Zend Framework 的组件可以独立使用或组合在一起,为开发者提供了高度的灵活性。 - **遵循 PHP 和 Web 标准**:该框架严格遵循 PHP 和 Web 标准,如 PHP 编程最佳实践、SOAP、Atom、RSS、JSON、...
PTML 可能是指 `Zend Framework` 中的视图脚本标记语言,类似于 Smarty 或其他模板引擎。它允许开发者将 PHP 代码与 HTML 结合,以创建动态页面。PTML 通过分离表现层和逻辑层,使开发者可以专注于布局和设计,而...
综上所述,"zendframework中文手册2010"提供了全面的 Zend Framework 学习资源,无论是初学者还是经验丰富的开发者,都能从中受益,提升PHP编程技能。通过深入学习和实践,可以有效地利用 Zend Framework 构建高质量...
描述中提到,这是一个作者自整理的完整实例项目,通过整合Smarty,去掉了Zend Framework中的默认视图层,完全使用Smarty来处理视图渲染。这表明项目着重展示了如何在Zend Framework中替代原有的视图系统,利用Smarty...
本实例教程专注于使用PHP5结合两个强大的框架——Zend Framework和Smarty,来构建基于MVC(Model-View-Controller)模式的应用程序。MVC模式是软件工程中的一种设计模式,它将业务逻辑、数据和用户界面分离,提高了...
标题 "Smarty jquery_api Zend_Framework_zh" 涵盖了三个关键的IT技术:Smarty、jQuery API和Zend Framework,这些都是Web开发中非常重要的组件。这些技术的中文版本表示它们是针对中文用户群体,方便国内开发者学习...
作为一款广泛使用的PHP框架,Zend Framework在Web开发领域扮演着重要的角色。本书通过系统性的讲解,帮助读者掌握如何使用Zend Framework来构建专业级的Web应用程序。 #### 二、Zend Framework简介 ##### 2.1 定义...
这样,Zend Framework在渲染视图时就会使用Smarty作为其模板引擎。这个设置可以让开发者利用Smarty提供的模板变量、模板继承、自定义函数等特性,同时享受Zend Framework的MVC架构优势。 在集成过程中,还需注意几...
#### 十二、Zend Framework Tool (ZFTool) ZFTool是一个辅助工具,可以方便地管理和执行ZF2应用程序的各种任务。 ##### 12.1 通过Composer安装 - 添加`zf/tool`作为项目依赖。 - 运行安装命令。 ##### 12.2 手动...
此外,还可以选择使用其他模板引擎,如Smarty或PHPTAL等。 ##### 控制器(Controller) 控制器是处理用户请求的核心组件。在Zend Framework中,控制器通常由`Zend_Controller_Action`类实现。控制器负责解析用户的...
在本项目中,"基于Zend Framework+smarty 制作的博客"是一个适合初学者实践和学习的案例。它融合了这两个强大的工具,展示了如何利用它们创建一个功能完备的博客系统。 1. ** Zend Framework 的核心概念:** - **...
在这一章,我们将学习 Zend\View 视图渲染系统,包括如何编写模板、使用视图助手以及如何实现布局。还将介绍如何使用PHP模板引擎如Smarty或Twig,以提升视图的可读性和可维护性。 ### 第九章:缓存与性能优化 了解 ...