Thinkphp 3.1.3中display方法呼叫其他模組的操作模板的bug
阿新 • • 發佈:2019-01-04
根據thinkphp手冊的說法,假如你在UserAction的index方法中想呼叫AdminAction中info方法所對應的模板,應該這樣寫:
$this->display('Admin:info');
可是當你這樣寫了,你發現什麼了?
對,報錯,提示本模組(User_Admin_info)模板不存在(筆者修改了分隔符)
到網上搜索一通,發現所有的論壇、部落格都理直氣壯得抄襲著Thinkphp開發手冊中原話的內容,彷彿他們已經做過測試,這樣寫就沒有問題一樣。
他們的原文都是這樣說的:
格式:display('模組名:操作名')例如,當前是User模組,我們需要呼叫Member模組的read操作模版 ,使用:
- $this->display('Member:read');
- $this->display('Public:menu');
一番折騰之後,得出結論:手冊寫錯了
如果你想在一個模組中呼叫另一個模組的某個操作方法對應的模板(即使那個模組的控制器根本不存在),你應該這樣寫:
$this->display("/Admin_info");//顯示AdminActiion.class.php 中的info方法對應的模板檔案
是不是很坑爹?
沒太仔細去看Thinkphp核心的函式庫和類庫,總之網上的什麼T方法之類的,統統試過各種不管用。
如果你也遇到了類似的情況,不放嘗試參考筆者的寫法試試。
以上資訊為筆者實際開發中遇到的情況,對應的Thinkphp框架版本是3.1.3,如有錯誤請指正。