Home >Backend Development >PHP Tutorial >Example analysis of widget extension usage under thinkPHP, _PHP tutorial
This article describes the use of widget extension under thinkPHP with examples. Share it with everyone for your reference, the details are as follows:
Widget extension is used to output different content on the page as needed. The definition of Widget extension is to define the Widget class library under the LibWidget directory of the project. For example, the following defines a Widget for displaying recent comments:
Located at LibWidgetShowCommentWidget.class.php
The Widget class library needs to inherit the Widget class and must define the render method implementation, for example:
The render method must use return to return the string information to be output, instead of outputting it directly.
Widget can also call the renderFile method of the Widget class to render the template and then output it.
Create a widget directory in the project's lib directory, which is at the same level as the action directory.
Create TestWidget.class.php:
class TestWidget extends Widget{ public function render($data){ //print_r($data); $data['id']=$data['id']; $data['info']=$data['info']; $content = $this->renderFile('index',$data); //print_r($content); return $content; } }
Create a corresponding Test folder in this directory, and put the html page called by $this->rendFile below.
index.html displays data information by using a loop
<div> 这是widget调用的模板页面 <foreach name="id" item="vo"> <span style="color:#ff0000">//注意:id对应与$data的键值</span> {$vo} </foreach> <br> <foreach name="info" item="vo"> <span style="color:#ff0000">//info对应于$data的键值</span> <foreach name="vo" item="v"> {$v} </foreach> </foreach> </div>
action method:
IndexAction.class.php
The code is as follows:
class TestAction extends Action{ public function index(){ $info=array(array("1","AA","title"),array("2","BB","title2")); $this->assign("info",$info); $this->display(); } }
The html page in the tpl called by the action is index.html
The code is as follows:
<div> 这个是test调用的action<br> {:W('Test',array("id"=>array("ID","name","title"),"info"=>$info))} <span style="color:#cc0000">//传递给TestWidget.class.php 的参数,要以array格式传递</span> </div>
Run IndexAction.class.php
The page is displayed as follows:
This will include the content in show.html
When does name use widgte?
Widgets are usually some encapsulated JS effect components. You can get some effects by directly calling 'Add parameters', such as TAB menu, carousel, picture carousel and other interactive effects
For example, the menu bar of a website. The columns on the right that are often not updated...
Convenient to call multiple times, such as displaying a news list on the left side of the page. If each page calls this list, do you have to write the same code in each controller? Isn’t it tiring? It’s possible to use widgets You only need to write it once and use it multiple times in the template
I hope this article will be helpful to everyone’s PHP programming based on the thinkPHP framework.