【小(xiǎo)編推薦】ThinkPHP3.2——Widget↔₩擴展

2014-06-26  &n±‌ ↓bsp;|   發布者:梁國(guó)芳&nbs→÷p;  |   查©≤看(kàn):3320次

Thinkphp

Widget擴展一(yī)般用(yòng)于頁面組件★φ®(jiàn)的(de)擴展。

舉個(gè)例子(zǐ),我們在頁面中實現(xiàn)一(yī)個(gè≥¶ )分(fēn)類顯示的(de)Widget,首先我們要(y↕'ào)定義一(yī)個(gè)Widget控制(zhì)器(qì)層 Cat₹₹≈<eWidget,如(rú)下(xià):

  1. namespace Home\Widget;
  2. use Think\Controller;
  3. class CateWidget extends Controller {
  4. public function menu(){
  5. return 'menuWidget';
  6. }
  7. }

然後,我們在模版中通(tōng)過W方法調用(yòng)<♠₹這(zhè)個(gè)Widget。

  1. {:W('Cate/Menu')}

執行(xíng)後的(de)輸出結果是(shì): me ≠↔nuWidget

如(rú)果,CateWidget類的(de)m≈≠‌enu方法改成:

  1. namespace Home\Widget;
  2. use Think\Controller;
  3. class CateWidget extends Controller {
  4. public function menu(){
  5. echo 'menuWidget';
  6. }
  7. }

模版中的(de)用(yòng)法則需要(yào)改成:

  1. {~W('Cate/Menu')}

傳入參數(shù)

如(rú)果需要(yào)在調用(yòng)Widget的←®(de)時(shí)候 使用(yòng)參數(sh≠♦↕ ù),可(kě)以這(zhè)樣定義:

  1. namespace Home\Widget;
  2. use Think\Controller;
  3. class CateWidget extends Controller {
  4. public function menu($id,$name){
  5. echo $id.':'.$name;
  6. }
  7. }

模版中的(de)參數(shù)調用(yòng)≈÷,使用(yòng):

  1. {:W('Cate/Menu',array(5,'thinkphp'))}

傳入的(de)參數(shù)是(shì)一(yī)個(g↑‌è)數(shù)組,順序對(duì)應了(le)menu→'"↕方法定義的(de)參數(shù)順序。

則會(huì)輸出

  1. 5:thinkphp

模闆支持

Widget可(kě)以支持使用(yòng)獨立的(de)模闆,例如(rú):<γε

  1. namespace Home\Widget;
  2. use Think\Controller;
  3. class CateWidget extends Controller {
  4. public function menu(){
  5. $menu = M('Cate')->getField('id,title');
  6. $this->assign('menu',$menu);
  7. $this->display('Cate:menu');
  8. }
  9. }

CateWiget類渲染了(le)一(yī☆Ω&)個(gè)模版文(wén)件(jiàn) View/Cate/menu.html。 在menu.html模版文(wén)件(jiàn)中的(de↓™€)用(yòng)法:

  1. <foreach name="menu" item="title">
  2. {$key}:{$title}
  3. </foreach>