Widget扩展一般用于页面组件的扩展,在页面根据需要输出不同的内容,下面介绍一下ThinkPHP中Widget的两种写法及调用

写法一:

ArticlWidget.class.php文件:

class ArticleWidget extends Widget {

    /**
*
* @param array $data
* @return type
* 调用方法:{:W('ArticleList',array('cid'=>25,'limit'=>5))}
* cid为分类id,limit为调用数量
*/
public function render($data) { $Article = M('Article');
$articleMap["cid"] = $data["cid"];
$data["articleList"] = $Article->where($articleMap)->order('id desc')->limit($data["limit"])->select();
foreach ($articleList as $key => $value) {
if ($value["thumbnail"] == "") {
$data["articleList"][$key]["thumbnail"] = '/Public/Img/Common/noThumbnail.jpg';
}
} return $this->renderFile('articleList', $data);
} }

模板文件articleList.html在Lib/Widget/Article目录下

<volist name="articleList" id="articleList_vo">
<li>
<a href="__APP__/Channel/articleDetail/code/article/id/{$articleList_vo.id}" title="{$articleList_vo.title}">{$articleList_vo.title}</a>
</li>
</volist>

写法二:

class ArticleWidget extends Action {

    /**
*
* @param array $data
* @return type
* 调用方法:{:R('Article/articleList',array('cid'=>25,'limit'=>5),'Widget')}
* cid为分类id,limit为调用数量
*/
public function articleList($cid, $limit) { $Article = M('Article');
$articleMap["cid"] = $cid;
$data = $Article->where($articleMap)->order('id desc')->limit($limit)->select();
foreach ($data as $key => $value) {
if ($value["thumbnail"] == "") {
$data[$key]["thumbnail"] = '/Public/Img/Common/noThumbnail.jpg';
}
} $this->assign('articleList', $data);
$this->display('Widget:articleList');
} }

模板文件articleList.html,内容同写法一,但放在Tpl/风格名/Widget/目录下

如果模板文件放在ArticleWiget.class.php文件所在目录的Article文件夹下,则写法如下:

$this->display(dirname(__FILE__) . '/Article/articleList.html');

最新文章

  1. 初学C#和MVC的一些心得,弯路,总结,还有教训(4)--Cache 关于创建多个缓存实例
  2. 最近面试的题目(WEB、Service、SQL、JavaScript)
  3. linux开启oracle服务
  4. UI:基础
  5. (转)ThinkPHP使用心得分享-分页类Page的用法
  6. SQL 2008R2 日期转换
  7. 使用STL处理分支限界法处理最优装载问题
  8. html5标准格式示代码
  9. android cts 命令的说明
  10. Unity5 打assetbundle时,无法打成图集仍然是散图的原因
  11. Java序列化和反序列化,你该知道得更多
  12. PHP定界符eof 的使用
  13. CodeForces - 589B(暴力+排序)
  14. eclipse中svn切换用户
  15. Range:HTML5中的新型Input类型
  16. Web jsp开发学习——前端后台传参方法
  17. 数据库字典查询,从EF工具操作中提取的
  18. redis中key的归类
  19. dns记录类型(转)
  20. 【BZOJ3144】[HNOI2013]切糕

热门文章

  1. STL学习笔记(已序区间算法)
  2. LoadRunner调用md5方法
  3. JAVA中的继承特点1
  4. cp 命令 简要
  5. hadoop partitioner个数与reducer个数的试验
  6. Spring Boot内嵌Tomcat session超时问题
  7. java.io.IOException: Illegal partition for 67 (-1)
  8. 《TomCat与Java Web开发技术详解》(第二版) 第八章节的学习总结 -- 访问mysql
  9. SetTimer时间间隔的问题
  10. git学习之时光机穿梭(四)