3 1的Widget有新玩法啦

2022-04-06 15:33:13 字數 1037 閱讀 4926

3.0版本的widget對action和view的支援力度是不夠的,雖然能夠實現基本的模板渲染輸出。3.1版本的發布帶來的多層mvc功能,給我們實現widget的方式帶來了新的思路,且看是如何實現吧。

看過thinkphp3.1新特性詳解:多層mvc的朋友們一定了解,3.1版本可以支援多層的控制器功能,因此我們可以在控制器層增加一層:widget層。

首先,還是在專案的lib目錄下面建立乙個widget目錄,並且建立乙個testwidget類(lib/widget/testwidget.class.php)如下: classtestwidgetextendsaction }

複製**

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

定義完成後,我們怎麼呼叫這個widget呢?用w方法肯定行不通了,這次需要r方法出場了。

r方法的作用是遠端呼叫模組的操作,但是3.1賦予了它新的作用,可以支援呼叫所有控制器層的操作方法,所以,我們可以在模板中這樣來呼叫widget:

複製**

就可以實現在頁面中的某個區域輸出: hello,thinkphp!

複製**

由於除了action控制器之外的其他控制器層是無法直接通過url訪問的,所以這個widget方法只能通過r方法在內部呼叫才可以。

你可以在testwidget類中呼叫model來輸出其他資料,如果需要渲染自身的模板,則可以直接呼叫display方法就行了。 classtestwidgetextendsaction }

複製**

我們在專案的tpl/test/ 目錄下面建立乙個hello(tpl/test/hello.html)模板檔案,新增輸出: hello,!

複製**

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

複製**

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

print Hello World 的新玩法

相信很多同學入門python的第一行 都是print hello world print是初學者最先接觸的python函式,但是很多人可能到現在也不完全清楚它的用法。print objects,sep end n file sys.stdout,flush false 引數 objects 複數,表...

print Hello World 的新玩法

相信很多同學入門python的第一行 都是print hello world print是初學者最先接觸的python函式,但是很多人可能到現在也不完全清楚它的用法。print objects,sep end n file sys.stdout,flush false 引數 objects 複數,表...

大資料的新玩法

大資料雖然已經不是什麼新鮮事物,但是大資料正在給我們的生活帶來更多的驚喜和改變。如果你還認為大資料僅僅只是可以應用在交通 金融這些傳統領域,那麼就真的是 out 了。大資料的能力會讓你大開眼界,下面就來看看,大資料的新奇玩法 大資料 死亡 美國波士頓市貝斯以色列女執事醫療中心 beth israel...