当前位置: 首页 > 编程笔记 >

ThinkPHP3.1的Widget新用法

宗政德宇
2023-03-14
本文向大家介绍ThinkPHP3.1的Widget新用法,包括了ThinkPHP3.1的Widget新用法的使用技巧和注意事项,需要的朋友参考一下

ThinkPHP3.0版本的Widget对Action和View的支持力度是相对不够的,仅能够实现基本的模板渲染输出。而3.1版本的发布带来的多层MVC功能,给我们实现Widget的方式带来了新的思路,且看是如何实现吧。

由于ThinkPHP3.1增加了对多层MVC的支持,因此3.1版本可以支持多层的控制器功能,由此我们就可以在控制器层再增加一层:Widget层。

首先,还是在项目的Lib目录下面创建一个Widget目录,并且创建一个TestWidget类(Lib/Widget/TestWidget.class.php)如下:

class TestWidget extends Action{
  public function hello($name=''){
    echo ("hello,".$name."!");
  }
 }

我们看到TestWidget和之前的区别是没有继承Widget类,而是直接继承了Action类,这就代表着在TestWidget中可以直接调用Action的方法,包括对模板的渲染输出。

定义完成后,我们怎么调用这个Widget呢?用W方法肯定行不通了,这次需要R方法出场了。
R方法的作用是远程调用模块的操作,但是3.1赋予了它新的作用,可以支持调用所有控制器层的操作方法,所以,我们可以在模板中这样来调用Widget:

{:R('Test/hello',array('ThinkPHP'),'Widget')}

就可以实现在页面中的某个区域输出:

hello,ThinkPHP!

由于除了Action控制器之外的其他控制器层是无法直接通过URL访问的,所以这个Widget方法只能通过R方法在内部调用才可以。

你可以在TestWidget类中调用Model来输出其他数据,如果需要渲染自身的模板,则可以直接调用display方法就行了。

class TestWidget extends Action{
  public function hello($name=''){
    $this->assign('name',$name);
    $this->display('Test:hello');
  }
 }

我们在项目的Tpl/Test/ 目录下面创建一个hello(Tpl/Test/hello.html)模板文件,添加输出:

Hello,{$name}!

如果你希望和之前的Widget一样,把模板文件放到当前目录下面,则可以使用:

class TestWidget extends Action{
  public function hello($name=''){
    $this->assign('name',$name);
    $this->display(dirname(__FILE__).'/Test/hello.html');
  }
 }

这个时候,你就可以把刚才定义的hello模板文件放入Widget/Test/ 目录下面了。

 类似资料:
  • 本文向大家介绍ThinkPHP3.1新特性之G方法的使用,包括了ThinkPHP3.1新特性之G方法的使用的使用技巧和注意事项,需要的朋友参考一下 长期以来ThinkPHP都是需要通过debug_start、debug_end方法甚至Debug类才能完成那些调试的功能,而在ThinkPHP3.1版本中,这些复杂的功能被一个简单的G方法取代了,这不可不谓是一次华丽升级。 G方法的作用包括标记位置和区

  • 本文向大家介绍ThinkPHP3.1新特性之命名范围的使用,包括了ThinkPHP3.1新特性之命名范围的使用的使用技巧和注意事项,需要的朋友参考一下 ThinkPHP3.1的命名范围功能,给模型操作提供了一系列的(连贯操作)封装,让你更方便的查询和操作数据。下面我们就来具体了解下这一用法。 1.定义属性 要使用命名范围功能,主要涉及到模型类的_scope属性定义和scope连贯操作方法的使用。

  • 本文向大家介绍ThinkPHP3.1新特性之多层MVC的支持,包括了ThinkPHP3.1新特性之多层MVC的支持的使用技巧和注意事项,需要的朋友参考一下 1.模型(Model)层:默认的模型层由Model类构成,但是随着项目的增大和业务体系的复杂化,单一的模型层很难解决要求,从3.1开始推出了多层Model的支持,设计思路很简单,不同的模型层仍然都继承自系统的Model类,但是在目录结构和命名规

  • 本文向大家介绍yii中widget的用法,包括了yii中widget的用法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了yii中widget的用法。分享给大家供大家参考。具体分析如下: WIDGET定义很简单,如果你在/protected/widget/test/下建立了一个名为“testWidget.php”的widget。 在视图中调用需要这样写: testWidget.php文件的

  • 本文向大家介绍ThinkPHP3.1新特性之Action参数绑定,包括了ThinkPHP3.1新特性之Action参数绑定的使用技巧和注意事项,需要的朋友参考一下 ThinkPHP3.1版的Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法。这一新特性对以往的操作方法使用没有任何影响,你也可以用新的方式来改

  • 早些时候,在jQuery中编写自定义控件的唯一方法是扩展$.fn命名空间。 这适用于简单的小部件。 假设您构建了更多有状态的小部件,它很快变得很麻烦。 为了帮助构建小部件,Widget Factory在jQuery UI中引入,它删除了通常与管理小部件相关的大部分样板。 jQueryUI Widget Factory只是一个函数($ .widget),它将字符串名称和对象作为参数,并创建一个jQu