ThinkPHP的Widget擴充執行個體_PHP教程

來源:互聯網
上載者:User
ThinkPHP的Widget擴充用於根據頁面需要輸出不同內容,它在項目目錄中的Lib/Widget下定義。

具體定義如下:

class NewsListWidget extends Widget{  public function render($data){    // code...  }}

需要注意:

1.Widget是一個抽象類別,其中有一個抽象方法(abstract)render,必須在子類中實現;
2.Widget的render方法必須使用return返回,而不是直接輸出;
3.$data是傳入Widget的參數。

然後我們可以在模板中直接調用這個Widget:

{:W('NewsList', array('tmpl' => 'a'))}

這裡我傳入了一個參數,這是比較常見的用法,Widget用來做什嗎?根據頁面需要輸出不同內容,這個不同內容,可以是資料不同,當然也可以是模板不同。

class NewsListWidget extends Widget{  public function render($data){    // code    $news; // 這裡可以是資料檢索語句檢索出來一個資料集    $html = $this->renderFile($data['tmpl'], $news);    return $html;  }}

這時候會自動渲染模板檔案/Lib/Widget/NewsList/a.html的內容,並把$news傳送過去,可以當普通模板檔案處理,然後輸出。

當然,還可以在Action控制器裡面擷取Widget的內容,進行二次加工。

$content = W('NewsList', array('tmpl' => 'a'), TRUE); // 第三個參數表示是否返回字串,預設是FALSE,代表直接輸出。

另外,ThinkPHP是MVC架構,請大家把資料檢索相關的內容放在Model層

http://www.bkjia.com/PHPjc/825367.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825367.htmlTechArticleThinkPHP的Widget擴充用於根據頁面需要輸出不同內容,它在項目目錄中的Lib/Widget下定義。 具體定義如下: class NewsListWidget extends Widget{ public...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.