首页  >  文章  >  后端开发  >  ThinkPHP中Widget扩展的两种写法及调用方法

ThinkPHP中Widget扩展的两种写法及调用方法

墨辰丷
墨辰丷原创
2018-05-23 09:37:391489浏览

这篇文章主要介绍了ThinkPHP中Widget扩展的两种写法及调用方法,详细分析了Widget扩展的写法及相应的调用技巧,需要的朋友可以参考下

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}" rel="external nofollow" title="{$articleList_vo.title}">{$articleList_vo.title}</a>
  </li>
</volist>

写法二:

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

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

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

$this->display(dirname(__FILE__) . &#39;/Article/articleList.html&#39;);

相关推荐:

PHP预定义变量9大超全局数组用法详解_php基础

PHP 随机数 C扩展随机数

理解php依赖注入和控制反转_php技巧

以上是ThinkPHP中Widget扩展的两种写法及调用方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn