SpeedPHP/自动显示模板
SpeedPHP | 快速入门 | 访问交互 | 数据操作 | 框架概述 | 模板引擎 | 优化加速 | 开发指南 | 数据模型 | API参考 |
sp框架的模板自动输出可以让我们不需要使用display语句就可以将模板输出,这简化了我们的日常编写的代码,同时也更有利于整理和归类模板,下面我们先介绍一下自动模板输出的方法,然后再介绍几个视图类的高级功能。
在应用程序的开发中,我们会发现程序的模板会渐渐增多,而仅放到一个目录中似乎并不科学,所以我们可以简单的整理一下,将每一个控制器的模板都分别放单独的一个目录,这样模板可以更方便去辨认和使用,同时也有利于项目的协作。
自动页面输出以及视图高级功能[ ]
例如将main_test.html放到tpl下面的main文件夹中,改成test.html的文件名。那么,我们便可以使用:$this->display('main/test.html'); 来显示模板了。
main是控制器,test是动作,所以放到main目录下面,文件名为test.html,这样模板从逻辑上就与控制器相对应了。进一步,我们希望能够更方便的输出模板。先来配置一下应用程序,以开启自动模板输出机制:
$spConfig = array( ... 'view' => array( 'enabled' => TRUE, // 开启Smarty支持 'config' =>array( 'template_dir' => APP_PATH.'/tpl', // 模板页面所在的目录 'compile_dir' => APP_PATH.'/tmp', // 临时文件编译目录 'cache_dir' => APP_PATH.'/tmp', // 临时文件缓存目录 'left_delimiter' => '<{', // Smarty左限定符,默认是{ 'right_delimiter' => '}'>, // Smarty右限定符,默认是} ), 'auto_display' => TRUE, // 是否使用自动输出模板功能 'auto_display_sep' => '/', // 自动输出模板的拼装模式,/为按目录方式拼装,_为按下划线方式,以此类推 'auto_display_suffix' => '.html', // 自动输出模板的后缀名 ), ...
在视图的Smarty配置下面,我们看到加入了auto_display的设置,首先是开启了自动输出('auto_display' => TRUE),然后是配置模板的拼装模式和后缀,以刚才的例子为例:
- 'auto_display_sep' => '/', 即文件存放的地址是“模板目录/控制器名/动作名.html”,
- 'auto_display_sep' => '-',则文件存放的地址是“模板目录/控制器名-动作名.html”.
模板后缀名一般默认是.html即可,当然如果改成其他的后缀(如.php)也没问题。
那么,我们配置好后,现在可以直接让它进行输出了:
main目录中的test.html模板:
<html><head></head> <body> 大家好,我是test.html。<br> $sent_ok等于:<{$sent_ok}> </body> </html>
在控制器中,
<?php class main extends spController { ... function test(){ $ok = "i am ok!"; $this->sent_ok = $ok; // 这里不需要display了 } ... }
访问test动作,将输出:
大家好,我是test.html。
$sent_ok等于:i am ok!
看起来,sp框架的自动模板输出,好像仅仅是节省一行的代码,但是,千万可不要小看了这一点点的简便,从软件工程角度,它将带给我们的是更智能的开发模式和更高的开发效率。
sp框架的View视图层的一些高级功能[ ]
获取Smarty对象[ ]
在控制器中使用$this->getView(),即可获取到View层的Smarty对象,如下面例子将使用Smarty内置函数fetch来获取模板article_sidebar.html
<?php class mainextends spController { ... function index() { $thecodes = $this->getView()->fetch("article_sidebar.htm"); } ... }
调试模板变量的方法[ ]
在日常开发中,我们经常需要知道对模板的赋值是否正如我们所希望的一样,所以需要在模板输出的同时可以将变量调试输出。那么,我们便可以开启模板调试配置:
$spConfig = array( ... 'view' => array( 'enabled' => TRUE, // 开启Smarty支持 'config' =>array( 'template_dir' => APP_PATH.'/tpl', // 模板页面所在的目录 'compile_dir' => APP_PATH.'/tmp', // 临时文件编译目录 'cache_dir' => APP_PATH.'/tmp', // 临时文件缓存目录 'left_delimiter' => '<{', // Smarty左限定符,默认是{ 'right_delimiter' => '}'>, // Smarty右限定符,默认是} ), 'debugging' => TRUE, // 是否开启视图调试功能,在部署模式下无法开启视图调试功能 ), ...
那么,在页面打开的时候,将同时打开一个变量调试的窗口,里面便是我们赋值到模板的变量。
将自定义函数/类的方法注册到模板引擎中——spAddViewFunction[ ]
spAddViewFunction是sp框架的扩展应用中经常用到的一个核心函数。 用法:
spAddViewFunction($alias, $callback_function)
参数:
- $alias,在模板中使用该函数/类的方法的名称
- $callback_function,函数名称或对象的方法数组
例子:
// 这是一个自定义函数,显示当前时间 function showtime(){ echo date("Y-m-d H:i:s"); } spAddViewFunction('SHOWTIME', 'showtime'); // 将其注册到模板当中
那么在模板中,我们可以使用该函数了:
<{SHOWTIME}>
参考来源[ ]
http://speedphp.com/manual.html
SpeedPHP使用手册导航 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|