2017-08-29 45 views
0

我正在使用CakePHP 1.2。我正在研究由別人編寫的CakePHP代碼的邏輯。我正在檢查以下控制器:如何在CakePHP中執行控制器操作

<?php 
// For serving up images or other files. 
class ImagesController extends AppController 
{ 
    function __setupDir($destination) 
    { 
     .......... 
    } 
    function view() 
    { 
     ..........  
    } 
} 
?> 

我知道CakePHP有一些約定,用於定義在請求匹配URL時如何調用特定操作。例如,上面給出我的ImagesController,我需要有這樣的文件:

應用程序/視圖/圖片/ view.ctp

那我就需要例如瀏覽器指向是這樣的:

http://localhost/myapplication/images/view

這應該執行爲上面提到的ImagesController控制器定義的「view()」函數。這就是CakePHP 1.2約定的工作原理。

根據https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html,「動作是用於顯示視圖的控制器方法,動作是控制器的單一方法。」在我的例子中,「view()」函數是一個動作,但是在我看到的應用程序中並沒有用來顯示視圖。在我正在學習的代碼中,我看到的是,有時當圖片或圖像加載到網站時,ImagesController控制器的「view()」功能被執行。我想明白什麼觸發這個「view()」函數。我知道訪問http://localhost/myapplication/images/view時沒有發生。有沒有其他方法可以在CakePHP中執行控制器操作,特別是在CakePHP 1.2中?我只需要知道並找到觸發這個「view()」函數的代碼。謝謝。

+1

登錄回溯自己節省了大量的時間'調試::日誌(「富」)'。 ** https://book.cakephp.org/1.2/en/The-Manual/Common-Tasks-With-CakePHP/Debugging.html** – ndm

+0

我可以在文件中使用它,例如core/cake/libs/controller /image_controller.php? –

+1

核心文件夾中不應該有這樣的文件,但通常情況下,您可以在控制器中運行該代碼。 – ndm

回答

0

我以前Debugger::trace()檢查和理解的代碼。這是我的「視圖()」控制器操作是如何執行。例如:

ImagesController->view('blue-theme', 'timeleft1.jpg') 
+0

core \ cake \ libs \ object.php包含這行:return $ this - > {$ method}($ params [0],$ params [1]);.不知怎麼的,在我的代碼中的某處,它變成了ImagesController-> view(),這就是我在我的問題中提到的view()函數的調用方式。我試圖在源代碼中搜索關鍵字「view(」),以查看在我的源代碼中何時以及何時調用了這個view()函數,但是我沒有辦法能夠在源代碼與該關鍵字,因爲如我所說,以某種方式返回$ this - > {$方法}($ params [0],$ params [1]);成爲ImagesController-> view()。 –

1

當您打開您提供的鏈接時,他們會在「危險」(紅色)面板中寫入:「此文檔適用於不再支持的CakePHP版本,請升級到更新的版本!

換句話說,它的意思是:求求你......你停止做什麼,使用CakePHP的最新版本(現在是3.5

,你會使用CakePHP 1.2學什麼的很大一部分很可能棄用開始,當然不推薦使用新的PSR。


對不起兄弟! 你的問題的行動是用來顯示視圖不僅控制器的方法,如果你設置這個 - $> autoRender假,你的行動將不需要的觀點

例如與ajax動作或當您將啓動一個簡單的方法不需要返回可視信息/輸出(呈現視圖),而只需要在當前頁面中顯示一條消息)。 實例或方法不需要輸出(視圖),但只得到了結果

  • 刪除的東西(一組,一個產品,一個客戶端,...)
  • 註銷用戶
  • 檢查如果用戶使用一個授權IP地址進行連接,
  • ...

如果我明白你的問題,view和功能視圖()是不一樣的。 視圖是輸出(你在屏幕上看到的) 和wiew()是一個公共函數,用於在應用程序中顯示元素的細節(用戶,組,產品,事件,課程等)。 ...) 當你創建一個應用程序,每一個元素/實體你會應該有一個至少CRUD功能的控制器,

  1. ç用於創建/插入一個新的實體(一般稱爲加()方法),
  2. R讀取/選擇一個實體(稱爲view()方法)或實體列表(稱爲index()方法) d),
  3. ù更新的元素(方法稱爲編輯())和
  4. d刪除(稱爲方法刪除())

這意味着,在用戶控制器(舉例來說),你會發現至少,指數(),添加()編輯(),視圖()和刪除()方法和additionn早已等公共功能(需要爲您的應用程序或本單位),如登錄(),註銷(),changePassword(),resetPassword(),和callbacks方法,如beforefilter(),beforerender(),後過濾(),讓你之前或之後控制器動作插入一些邏輯...

注意兩兩件事:

  1. 視圖是呈現layout內,(佈局是你的代碼不需要從一個頁面切換到另外一個部分,並認爲是動態信息)
  2. CakePHP都有一個代碼生成器(bake ),其爲您創造一個單一的命令行,所有的控制器,視圖,模型,...

希望它可以幫助

+0

謝謝@Benfarhat,但這不能回答我的問題。事實上,我需要爲這個特定的項目使用CakePHP 1.2,理想情況下我應該升級是一個完全不同的主題。 –

+1

對不起@ jaime-montoya - 編輯我的回答 – Benfarhat

相關問題