在thinkphp3.1Widget的新用途
Widget ThinkPHP3.0版本还没有行动,看来足够的支持,只能实现基本的模板渲染输出,3.1版本的发布带来的多层MVC功能,给了我们一种新的方法实现控件,以及如何实现它。作为thinkphp3.1增加MVC多层支持,3.1版本可以支持多层控制器的功能,所以我们可以添加另一个层,控制层:部件层。
首先,创建一个widget目录项目的lib目录下创建一个testwidget类(库 /部件/ testwidget。类。PHP)如下:
类testwidget延伸动作{
公共函数hello($ = ''){
hello。!;
}
}
我们看到,testwidget和以前的区别不是继承Widget类,而是直接继承Action类,这意味着我们可以直接调用动作testwidget,包括渲染输出模板。
定义完成后我们如何调用这个小部件使用W方法当然是不可能的,这一次需要R方法。
R方法的作用是远程调用模块操作,但是3.1给它一个新角色并支持控制器层的所有操作方法。因此,我们可以在模板中调用小部件。
{::R(测试/你好,阵列('thinkphp),'widget)}
可以在页面的一个区域实现输出:
你好,ThinkPHP!
由于控制器以外的其他控制器层不能直接通过URL访问,因此只能用R方法内部调用小部件方法。
你可以调用模型在testwidget类输出的其他数据,如果你需要绘制自己的模板,可以直接调用显示方法。
类testwidget延伸动作{
公共函数hello($ = ''){
美元->分配('name',$name);
美元->显示(测试:你好);
}
}
我们在项目的第三方/目录目录下创建一个hello(TPL)测试模板文件,添加输出:
你好,{ $ }!
如果您想将模板文件放在当前目录下,就像前面的小部件一样,您可以使用它:
类testwidget延伸动作{
公共函数hello($ = ''){
美元->分配('name',$name);
美元->显示(dirname(__file__)。 /测试/你好。HTML);
}
}
此时,您可以将刚才定义的hello模板文件放在小部件目录下。