<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="ThinkPHP的Widget扩展实例" id="card1">
<p> 游客</p><p>
标题:ThinkPHP的Widget扩展实例<br/>
正文:<br/>
ThinkPHP的Widget扩展用于根据页面需要输出不同内容，它在项目目录中的Lib/Widget下定义。具体定义如下：class NewsListWidget extends Widget{<br/>  public function render($data){<br/>    // code...<br/>  }<br/>}需要注意：1.Widget是一个抽象类，其中有一个抽象方法（abstract）render，必须在子类中实现；<br/> 2.Widget的render方法必须使用return返回，而不是直接输出；<br/> 3.$data是传入Widget的参数。然后我们可以在模板中直接调用这个Widget：{:W('NewsList', array('tmpl' =&amp;gt; 'a'))}这里我传入了一个参数，这是比较常见的用法，Widget用来做什么？根据页面需要输出不同内容，这个不同内容，可以是数据不同，当然也可以是模板不同。class NewsListWidget extends Widget{<br/>  public function render($data){<br/>    // code<br/>    $news; // 这里可以是数据检索语句检索出来一个数据集<br/>    $html = $this-&amp;gt;renderFile($data['tmpl'], $news);<br/>    return $html;<br/>  }<br/>}这时候会自动渲染模板文件/Lib/Widget/NewsList/a.html的内容，并把$news传送过去，可以当普通模板文件处理，然后输出。当然，还可以在Action控制器里面获取Widget的内容，进行二次加工。$content = W('NewsList', array('tmpl' =&amp;gt; 'a'), TRUE); // 第三个参数表示是否返回字符串，默认是FALSE，代表直接输出。另外，ThinkPHP是MVC框架，请大家把数据检索相关的内容放在Model层<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1443&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1443&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1443&amp;Page=1">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1443">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1443">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>