yaf视图的使用

注:YAF是一个关注性能的框架,因此使用原生的PHP作为模板引擎,效率会更高

1、模板设置

(1)模板存放位置

默认存放位置为application/veiws下面,这里将它修改到application/templates下面

在启动文件Bootstrap.php中添加:

  1. public function _initView(Yaf\Dispatcher $dispatcher)
  2. {
  3. $dispatcher->initView(APP_PATH.'/application/templates/');
  4. }
  • 注:APP_PATH为入口文件定义的常量
(2)模板文件后缀:

修改项目配置文件application.ini即可,默认后续为phtml

  1. application.view.ext = html
  • 注:根据项目情况修改为需要的后缀
(3)自动定位模板设置

在yaf中会根据当前请求的路径自动定位其模板,并输出渲染后的模板,如果想关闭这个设置,可以在启动文件Bootstrap中使用:

  1. public function _initView(Yaf\Dispatcher $dispatcher)
  2. {
  3. $dispatcher->autoRender(false);
  4. }

2、内置常用方法

(1)设置模板路径:setScriptPath

用法:setScriptPath(string $templateDir)

  1. <?php
  2. class TestController extends Yaf\Controller_Abstract
  3. {
  4. public function welcomeAction()
  5. {
  6. $this->getView()->setScriptPath(APP_PATH.'/application/templates/');
  7. }
  8. }
(2)模板变量赋值
  1. <?php
  2. class TestController extends Yaf\Controller_Abstract
  3. {
  4. public function welcomeAction()
  5. {
  6. //单个赋值(字符串)
  7. $this->getView()->assign('title', 'blog');
  8. //多个赋值(数组)
  9. $this->getView()->assign(array('title'=>'blog', 'name'=>'shixinke'));
  10. }
  11. }
(3)渲染模板并输出

注:需要关闭模板自动定位设置,在启动文件中设置(全局设置)或在操作中设置(局部设置)

  1. <?php
  2. class TestController extends Yaf\Controller_Abstract
  3. {
  4. public function welcomeAction()
  5. {
  6. \Yaf\Dispatcher::getInstance()->autoRender(false);
  7. $this->getView()->assign('title', 'blog')->display('index/index.phtml');
  8. }
  9. }
(4)只渲染模板render

它不会输出任何内容,只返回一个渲染后的内容(字符串),可用于生成静态

注:需要关闭模板自动定位设置,在启动文件中设置(全局设置)或在操作中设置(局部设置)

  1. <?php
  2. class TestController extends Yaf\Controller_Abstract
  3. {
  4. public function welcomeAction()
  5. {
  6. \Yaf\Dispatcher::getInstance()->autoRender(false);
  7. $this->getView()->assign('title', 'blog')->render('index/index.phtml'); //在开启自动定位模板时不需要这一步
  8. }
  9. }
(5)清除模板赋值
  1. <?php
  2. class TestController extends Yaf\Controller_Abstract
  3. {
  4. public function welcomeAction()
  5. {
  6. //字符串形式
  7. $this->getView()->assign('name', 'shixinke');
  8. //数组形式
  9. $this->getView()->assign(array('name'=>'shixinke', 'title'=>'shixinke`s blog'));
  10. //清除赋值
  11. $this->getView()->clear();
  12. }
  13. }