簡體   English   中英

如何將新的 url 路由添加到現有的 CakePHP (2) 項目

[英]How to add a new url route to an existing CakePHP (2) project

我的一個客戶有一個遺留的 CakePHP2 網站,需要用新頁面更新以生成 PDF,我真的很難在 Controller 中調用新方法。

我在 PHP 方面有很多經驗,但在過去五年中我沒有大量使用它,而且我從未接觸過 CakePHP。 該網站由其他人維護,但自從那個人離開后,他們讓我看一看。 我知道該站點正在運行一個非常舊版本的 Cake,我已經告訴過他們,但他們現在不希望它更新,因為它無論如何都會被替換。

我已經瀏覽了 v2 的 CakePHP 文檔,但我的客戶路由。php 文件似乎與文檔中建議的通配符路徑不匹配。

路由到幾個現有方法的 routes.php 中的條目是:

Router::connect('/', array('controller' => 'surveys', 'action' => 'index'));

然后我編輯了 Controller/SurveysController.php 文件以添加一個新方法,這樣我就可以執行一個簡單的測試。

    public function pdf($id, $type = 1) {
        file_put_contents("/tmp/debug.log", "inside the new method");
        // Call an existing method just to load a page
        $this->report($id);

我已將現有的Views/Survey/report.ctp文件復制到Views/Survey/pdf.ctp ,所以理論上,該方法應該采取相同的操作,並且視圖/模板也將是相同的。

我遇到的問題是,雖然我可以瀏覽到surveys/report/123的現有 URL,但如果我嘗試使用surveys/pdf/123的新方法 URL,我只是將 HTTP302 重定向到網站索引。 我嘗試在視圖中創建的文件沒有被創建,但是因為我沒有看到 404 頁面,例如如果我去/surveys/invalid-url/123我真的不明白發生了什么。

更糟糕的是,由於它使用的所有舊依賴項與我當前的開發機器不兼容,我無法在本地運行該站點。

根據我對 CakePHP 的了解,創建新方法和 new.ctp 文件應該是我需要做的所有事情,以使頁面正常工作,但顯然我錯過了一些東西。

希望一些 S/O 用戶可以為我指出錯誤的正確方向。

更新正在添加默認路由,因為它們仍然存在:

require CAKE. 'Config'. DS. 'routes.php';

他們正在使用 [ACL from the docs][1] 並安裝了 AclExtras,但是當我運行./Console/cake AclExtras.AclExtras aco_update時,他們收到錯誤消息。

Error: Class QuestionsControllerDec2017 does not exist

我可以看到很多文件和文件夾的名稱中有日期,我認為它們是較舊的備份。 現在這是否會導致反射拾取它們的問題?

我編輯了 Controller/UsersControllers.php 為新方法添加一個條目

    $this->Acl->allow($group, 'controllers/Surveys/report');
    $this->Acl->allow($group, 'controllers/Surveys/download_report');
    // New Line below
    $this->Acl->allow($group, 'controllers/Surveys/pdf');

那么是否 aros_acos 表沒有過時,需要添加一個條目,但由於之前的錯誤,我無法動態添加。

** 更新 2 ** 問題是我錯過了權限創建,因此由於遺留代碼訪問必須通過使用來創建

./Console/cake acl create aco Surveys pdf

問題是,雖然我更新了 UserController.php 文件,但我沒有按照文檔應用 ACL 更改。

我無法使用 AclExtras 由於遺留備份控制器破壞它導致的錯誤,否則這將是所需的命令:

./Console/cake AclExtras.AclExtras aco_update

所以我改為使用手動方式:

./Console/cake acl create aco Surveys pdf

其中,Surveys 是 controller 名稱,pdf 是方法名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM