ThinkPHP3.1的Widget新用法_PHP教程

來源:互聯網
上載者:User
ThinkPHP3.0版本的Widget對Action和View的支援力度是相對不夠的,僅能夠實現基本的模板渲染輸出。而3.1版本的發布帶來的多層MVC功能,給我們實現Widget的方式帶來了新的思路,且看是如何?吧。

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

首先,還是在項目的Lib目錄下面建立一個Widget目錄,並且建立一個TestWidget類(Lib/Widget/TestWidget.class.php)如下:

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

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

定義完成後,我們怎麼調用這個Widget呢?用W方法肯定行不通了,這次需要R方法出場了。
R方法的作用是遠程調用模組的操作,但是3.1賦予了它新的作用,可以支援調用所有控制器層的操作方法,所以,我們可以在模板中這樣來調用Widget:

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

就可以實現在頁面中的某個地區輸出:

hello,ThinkPHP!

由於除了Action控制器之外的其他控制器層是無法直接通過URL訪問的,所以這個Widget方法只能通過R方法在內部調用才可以。

你可以在TestWidget類中調用Model來輸出其他資料,如果需要渲染自身的模板,則可以直接調用display方法就行了。

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

我們在項目的Tpl/Test/ 目錄下面建立一個hello(Tpl/Test/hello.html)模板檔案,添加輸出:

Hello,{$name}!

如果你希望和之前的Widget一樣,把模板檔案放到目前的目錄下面,則可以使用:

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

這個時候,你就可以把剛才定義的hello模板檔案放入Widget/Test/ 目錄下面了。

http://www.bkjia.com/PHPjc/825369.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825369.htmlTechArticleThinkPHP3.0版本的Widget對Action和View的支援力度是相對不夠的,僅能夠實現基本的模板渲染輸出。而3.1版本的發布帶來的多層MVC功能,給我們實...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.