我想重写 Mage_Core_Controller_Front_Action
以向所有前端 Controller 操作添加 ACL 检查,类似于使用 Mage_Adminhtml_Controller_Action::preDispatch()
中完成的方式Mage_Adminhtml_Controller_Action::_isAllowed()
。
我已经能够创建一个PackageName_ModuleName_Controller_Front_Action
,它成功地扩展了Mage_Core_Controller_Front_Action
,包含并从任何 Controller 使用它,但是,此方法需要我现在扩展每个我想要添加 ACL 的 Magento 前端 Controller ,以便让它们使用我的新 Front_Action。如果我想要“拒绝”、“允许”优先策略设置,则需要进行大量重写。
如果有人知道如何以更有效的方式正确扩展此类,它肯定会派上用场,否则我想我可以处理“允许”、“拒绝”优先级,但这对于我的使用来说仍然是很多压倒性的事情案例。
最佳答案
而不是覆盖 Mage_Core_Controller_Front_Action
(正如您所提到的,如果不重写基于此类的每个前端 Controller ,这几乎是不可能的),您可以将观察者放在 controller_action_predispatch
上。事件,并使用controller_action
随其发送的值(实际上应该位于 Mage_Core_Controller_Front_Action
的当前实例的前端)。
关于Magento:如何覆盖 Mage_Core_Controller_Front_Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17680604/