![](/img/trans.png)
[英]cakephp ACL check if user has permission to execute action in current controller
[英]How to execute a controller action in CakePHP
我正在使用CakePHP 1.2。 我正在研究別人編寫的CakePHP代碼的邏輯。 我正在檢查以下控制器:
<?php
// For serving up images or other files.
class ImagesController extends AppController
{
function __setupDir($destination)
{
..........
}
function view()
{
..........
}
}
?>
我知道CakePHP具有約定來定義在請求與URL匹配時如何調用特定動作。 例如,鑒於上述我的ImagesController,我將需要具有以下文件:
應用程序/視圖/圖像/ view.ctp
然后,我需要將瀏覽器指向如下所示:
HTTP://本地主機/所有MyApplication /圖像/視圖
那應該執行為上述ImagesController控制器定義的“ view()”函數。 這就是CakePHP 1.2約定的工作方式。
根據https://book.cakephp.org/1.2/zh-CN/The-Manual/Developing-with-CakePHP/Controllers.html ,“動作是用於顯示視圖的控制器方法。動作是控制器的一種方法。 “ 就我而言,“ view()”函數是一個操作,但是從我所看到的應用程序中,它並沒有用於顯示視圖。 在我正在研究的代碼中,我看到的是有時將圖片或圖像加載到網站中時,將執行ImagesController控制器的“ view()”函數。 我試圖確切地了解是什么觸發了此“ view()”函數。 我知道訪問http:// localhost / myapplication / images / view時不會發生這種情況。 通常,在CakePHP中,特別是在CakePHP 1.2中,是否有另一種執行控制器動作的方法? 我只需要知道並找到觸發此“ view()”函數的代碼。 謝謝。
當您打開給出的鏈接時,他們會在“危險”(紅色)面板中寫道:“此文檔適用於不再支持的CakePHP版本。請升級到較新的版本!”
換句話說,這意味着:請...停止您的操作,並從最新版本的cakephp開始(現在是3.5 )
在Cakephp 1.2中您將學到的大部分內容可能已被棄用,並且肯定不會在新的PSR中被推薦。
對不起兄弟! 對於您的問題,操作不僅是用於顯示視圖的控制器方法,如果將$ this-> autoRender設置為false,則操作將不需要視圖
例如,使用ajax動作或何時啟動簡單的方法,而該方法不需要返回視覺信息/輸出(以呈現視圖),而只需返回當前頁面中的一條消息即可。 不需要輸出(視圖)但僅獲得結果的示例或方法
如果我理解您的問題,則視圖和函數view()是不相同的 。 視圖是輸出(您在屏幕上看到的),而wiew()是一個公共函數,用於顯示應用程序中某個元素的詳細信息(用戶,組,產品,事件,課程,... 。)在創建應用程序時,對於每個元素/實體,您都應該擁有一個具有最少CRUD功能的控制器,
這意味着,在您的Users控制器中(例如),您將至少找到index (), add () edit (), view ()和delete ()方法以及其他公共功能(您的應用程序或此實體需要)像登錄 (), 注銷 (),changePassword(),resetPassword()和回調方法,如beforefilter(),beforerender(), 后過濾器 (),讓你之前或之后控制器動作插入一些邏輯?
注意2件事:
希望能幫助到你
我使用Debugger::trace()
來檢查和理解代碼。 例如,這就是我的“ view()”控制器動作的執行方式:
ImagesController->view('blue-theme', 'timeleft1.jpg')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.