2012-11-02 53 views
2

我是這個框架的新手,希望用插件擴展/覆蓋Controller方法。如果這是做錯的方法,請告訴我。我只是希望解決方案是模塊化的,因爲不會篡改擴展控制器。這是想什麼我..CakePHP:帶插件的覆蓋控制器方法

MyController extends AppController{ 

function index(){} 

} 

我有一個插件

MyPlugin extends MyController{ 

function index(){} 

} 

我想在MyController->指數()被調用運行MyPlugin->指數()。任何幫助,將不勝感激。

+0

爲什麼不直接從'MyController'裏的'MyPlugin'運行代碼?你爲什麼要重寫? – Fuhrmann

+0

MyContoller可能會在將來進行更改,這會覆蓋對其所做的任何修改。這是我希望它是模塊化的原因。 –

+0

我們需要更多具體的覆蓋控制器的改變例子。也許還有另一種解決方案,因爲我看到它的方式,這是一個糟糕的設計。 – Wa0x6e

回答

0

你要求的是某種「反向繼承」,它在PHP中不受支持(可能會考慮Java或ObjectiveC類別中的Aspects)。

據我瞭解,你有以下情況:

"3rd Party App's Controller class" extends "CakePHP's Controller class" 

您從外部上行流得到的類和要修改的第三方應用程序的控制,而不會犧牲任何上游。這是語言無法實現的,據我所知,CakePHP不提供任何框架解決方案。

您可能能夠通過modifieng路由來實現自己的目標,即請求重定向到MyController到您的自定義MyPlugin控制器,並從那裏調用MyController的行動。