最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ThinkPHP3.1的Widget新用法

 更新時(shí)間:2014年06月19日 12:03:49   投稿:shichen2014  
這篇文章主要介紹了ThinkPHP3.1的Widget新用法,需要的朋友可以參考下

ThinkPHP3.0版本的Widget對(duì)Action和View的支持力度是相對(duì)不夠的,僅能夠?qū)崿F(xiàn)基本的模板渲染輸出。而3.1版本的發(fā)布帶來的多層MVC功能,給我們實(shí)現(xiàn)Widget的方式帶來了新的思路,且看是如何實(shí)現(xiàn)吧。

由于ThinkPHP3.1增加了對(duì)多層MVC的支持,因此3.1版本可以支持多層的控制器功能,由此我們就可以在控制器層再增加一層:Widget層。

首先,還是在項(xiàng)目的Lib目錄下面創(chuàng)建一個(gè)Widget目錄,并且創(chuàng)建一個(gè)TestWidget類(Lib/Widget/TestWidget.class.php)如下:

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

我們看到TestWidget和之前的區(qū)別是沒有繼承Widget類,而是直接繼承了Action類,這就代表著在TestWidget中可以直接調(diào)用Action的方法,包括對(duì)模板的渲染輸出。

定義完成后,我們?cè)趺凑{(diào)用這個(gè)Widget呢?用W方法肯定行不通了,這次需要R方法出場(chǎng)了。
R方法的作用是遠(yuǎn)程調(diào)用模塊的操作,但是3.1賦予了它新的作用,可以支持調(diào)用所有控制器層的操作方法,所以,我們可以在模板中這樣來調(diào)用Widget:

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

就可以實(shí)現(xiàn)在頁(yè)面中的某個(gè)區(qū)域輸出:

hello,ThinkPHP!

由于除了Action控制器之外的其他控制器層是無法直接通過URL訪問的,所以這個(gè)Widget方法只能通過R方法在內(nèi)部調(diào)用才可以。

你可以在TestWidget類中調(diào)用Model來輸出其他數(shù)據(jù),如果需要渲染自身的模板,則可以直接調(diào)用display方法就行了。

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

我們?cè)陧?xiàng)目的Tpl/Test/ 目錄下面創(chuàng)建一個(gè)hello(Tpl/Test/hello.html)模板文件,添加輸出:

Hello,{$name}!

如果你希望和之前的Widget一樣,把模板文件放到當(dāng)前目錄下面,則可以使用:

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

這個(gè)時(shí)候,你就可以把剛才定義的hello模板文件放入Widget/Test/ 目錄下面了。

相關(guān)文章

最新評(píng)論

仙桃市| 红原县| 资阳市| 吕梁市| 清水河县| 七台河市| 马公市| 丁青县| 南陵县| 台南县| 洛南县| 大安市| 苗栗市| 哈尔滨市| 开鲁县| 抚州市| 扎鲁特旗| 长乐市| 高要市| 元阳县| 石景山区| 临泉县| 怀化市| 利辛县| 嵊泗县| 崇仁县| 横峰县| 夏邑县| 延吉市| 曲水县| 美姑县| 准格尔旗| 察隅县| 兴仁县| 炉霍县| 岳阳市| 兖州市| 共和县| 平原县| 鄂托克前旗| 新沂市|