是的,您可以創建多個擴展相同核心控制器的模塊。
首先,您需要包含核心控制器,然後僅重載所需的特定功能。
require_once 'Mage/Customer/controllers/AccountController.php';
class Namespace_Module1_AccountController extends Mage_Customer_AccountController
{
public function indexAction(){
//this will overload the index action for the core customer AccountController
}
}
對您製作的每個模塊重複此操作,並僅重載您希望更改的操作。例如,如果你想讓第二個模塊重載保存操作,你會這樣做。
require_once 'Mage/Customer/controllers/AccountController.php';
class Namespace_Module2_AccountController extends Mage_Customer_AccountController
{
public function saveAction(){
//this will overload the save action for the core customer AccountController
//this will also leave your index action overload from the other module in place
}
}
但是,如果兩個模塊使用相同的功能,那麼它將如何工作?兩個或一個將工作?或者會發生任何疑惑/錯誤? –
我還沒有測試過這個,但我相信如果兩個模塊都定義了一個相同名稱的函數,那麼其中一個將會被忽略(config.xml文件最後加載的那個會贏,我_think_第三方模塊按字母順序加載)。但是,如果它們都依賴於從核心控制器繼承的通用功能,那很好。它們可以像那樣共存。 –