thinkphp url中action 沒定義 也能訪問到模板

來源:互聯網
上載者:User
thinkphp url中action 沒有定義 也能訪問到模板?
thinkphp url中action 沒有定義 也能訪問到模板?

最近剛剛開始接觸thinkphp 的架構,但是在看公司源碼的時候,發現url中的action在類中沒有對應的實現方法。

thinkphp 中有空操作和空模組之說, 我本來以為是通過空操作來實現的。

最終確認的結果:根本沒有經過模組,直接把action對應的模板給display了。

本人剛剛接觸thinkphp 不知道為什麼 求大神幫忙
------解決思路----------------------
你看下配置裡面是不是開啟了路由功能,路由功能可以偽造地址;不知道這個是不是你現在遇到的問題。
------解決思路----------------------
引用:
你看下配置裡面是不是開啟了路由功能,路由功能可以偽造地址;不知道這個是不是你現在遇到的問題。

------解決思路----------------------
在進入使用者自訂的action之前,會自動檢測是否存在該方法
如果沒有就直接讀模板,連模板都沒有就報一個該方法不存在之類的錯誤
------解決思路----------------------
引用:
Quote: 引用:

在進入使用者自訂的action之前,會自動檢測是否存在該方法
如果沒有就直接讀模板,連模板都沒有就報一個該方法不存在之類的錯誤


謝謝你的解釋,你能提供thinkphp官網對此說明的連結給我嗎?


這個...沒仔細看過官方的,根據它的表現完全可以逆推出原理
如果你感興趣,可以完整閱讀tp的源碼
------解決思路----------------------
見 ThinkPHP/Library/Think/Controller.class.php __call 方法
    /**
* 魔術方法 有不存在的操作的時候執行
* @access public
* @param string $method 方法名
* @param array $args 參數
* @return mixed
*/
public function __call($method,$args) {
if( 0 === strcasecmp($method,ACTION_NAME.C('ACTION_SUFFIX'))) {
if(method_exists($this,'_empty')) {
// 如果定義了_empty操作 則調用
$this->_empty($method,$args);
}elseif(file_exists_case($this->view->parseTemplate())){
// 檢查是否存在預設模版 如果有直接輸出模版
$this->display();
}else{
E(L('_ERROR_ACTION_').':'.ACTION_NAME);
}
}else{
E(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_'));
return;
}
}
這是一種容錯技術,並不需要在使用手冊中說明
  • 聯繫我們

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