注:YAF是一个关注性能的框架,因此使用原生的PHP作为模板引擎,效率会更高
1、模板设置
(1)模板存放位置
默认存放位置为application/veiws下面,这里将它修改到application/templates下面
在启动文件Bootstrap.php中添加:
public function _initView(Yaf\Dispatcher $dispatcher)
{
$dispatcher->initView(APP_PATH.'/application/templates/');
}
- 注:APP_PATH为入口文件定义的常量
(2)模板文件后缀:
修改项目配置文件application.ini即可,默认后续为phtml
application.view.ext = html
- 注:根据项目情况修改为需要的后缀
(3)自动定位模板设置
在yaf中会根据当前请求的路径自动定位其模板,并输出渲染后的模板,如果想关闭这个设置,可以在启动文件Bootstrap中使用:
public function _initView(Yaf\Dispatcher $dispatcher)
{
$dispatcher->autoRender(false);
}
2、内置常用方法
(1)设置模板路径:setScriptPath
用法:setScriptPath(string $templateDir)
<?php
class TestController extends Yaf\Controller_Abstract
{
public function welcomeAction()
{
$this->getView()->setScriptPath(APP_PATH.'/application/templates/');
}
}
(2)模板变量赋值
<?php
class TestController extends Yaf\Controller_Abstract
{
public function welcomeAction()
{
//单个赋值(字符串)
$this->getView()->assign('title', 'blog');
//多个赋值(数组)
$this->getView()->assign(array('title'=>'blog', 'name'=>'shixinke'));
}
}
(3)渲染模板并输出
注:需要关闭模板自动定位设置,在启动文件中设置(全局设置)或在操作中设置(局部设置)
<?php
class TestController extends Yaf\Controller_Abstract
{
public function welcomeAction()
{
\Yaf\Dispatcher::getInstance()->autoRender(false);
$this->getView()->assign('title', 'blog')->display('index/index.phtml');
}
}
(4)只渲染模板render
它不会输出任何内容,只返回一个渲染后的内容(字符串),可用于生成静态
注:需要关闭模板自动定位设置,在启动文件中设置(全局设置)或在操作中设置(局部设置)
<?php
class TestController extends Yaf\Controller_Abstract
{
public function welcomeAction()
{
\Yaf\Dispatcher::getInstance()->autoRender(false);
$this->getView()->assign('title', 'blog')->render('index/index.phtml'); //在开启自动定位模板时不需要这一步
}
}
(5)清除模板赋值
<?php
class TestController extends Yaf\Controller_Abstract
{
public function welcomeAction()
{
//字符串形式
$this->getView()->assign('name', 'shixinke');
//数组形式
$this->getView()->assign(array('name'=>'shixinke', 'title'=>'shixinke`s blog'));
//清除赋值
$this->getView()->clear();
}
}