### 模板
The Yaf_View_Simple class
官方文档:http://www.laruence.com/manual/yaf.class.view.html
Yaf_View_Simple是Yaf自带的视图引擎, 它追求性能, 所以并没有提供类似Smarty那样的多样功能, 和复杂的语法.
对于Yaf_View_Simple的视图模板, 就是普通的PHP脚本, 对于通过Yaf_View_Interface::assgin的模板变量, 可在视图模板中直接通过变量名使用.
#### 使用$this->getView()->assign()在控制器中定义变量
`<?php
class IndexController extends Yaf_Controller_Abstract {
public function indexAction() {
$mod = new UserModel();
$list = $mod->where('id',1)->get();
$this->getView()->assign("list", $list);
$this->getView()->assign("title", "Smarty Hello World");
$this->getView()->assign("content", "Hello World");
}`
#### 在模板文件中使用php脚本来输出
`<html>
<head>
<meta charset="utf-8">
<title><?php echo $title;?></title>
</head>
<body>
<?php echo $content;?>
<?php foreach($list as $val){?>
<p><?php echo $val['username']?></p>
<?}?>
</body>
</html>`
### 关闭Yaf框架里的自动加载模板
Yaf框架默认是开启自动加载模板的,如要关闭自动加载,可在Bootstrap.php里设置全局关闭,如:
`<?php
class Bootstrap extends Yaf_Bootstrap_Abstract
{
public function _initConfig()
{
Yaf_Registry::set('config', Yaf_Application::app()->getConfig());
Yaf_Dispatcher::getInstance()->autoRender(FALSE); // 关闭自动加载模板
}
}`
单独关闭模板加载,可以需要关闭的控制器内利用Yaf_Dispatcher::getInstance()->disableView()操作:
`<?php
class IndexController extends Yaf_Controller_Abstract {
/**
* Controller的init方法会被自动首先调用
*/
public function init() {
/**
* 如果是Ajax请求, 则关闭HTML输出
*/
if ($this->getRequest()->isXmlHttpRequest()) {
Yaf_Dispatcher::getInstance()->disableView();
}
}
}
?>`
### 手动调用指定模板
在控制器里手动调用的方式有2种:
一,调用当前$this->_module目录下的模版,下面是手动调用view/index/目录下hello.phtml模板
`<?php
class IndexController extends Yaf_Controller_Abstract
{
public function indexAction()
{
$this->getView()->assign("content", "Hello World");
$this->display('hello');
}
}`
二,随意调用view目录下的模板,下面是调用view/test/world.phtml模板
`<?php
class IndexController extends Yaf_Controller_Abstract
{
public function indexAction()
{
$this->getView()->assign("content", "Hello World");
$this->getView()->display('test/world.phtml');
}
}`