我有一个模块可以通过
使用我的控制器而不是magento<routers>
<checkout>
<args>
<modules>
<Some_Thing before="Mage_Checkout">Some_Thing</Some_Thing>
</modules>
</args>
</checkout>
</routers>
在扩展核心类的类中,我必须明确要求该类。有谁知道这是为什么?
答案 0 :(得分:12)
Magento自动加载器是一个简单的“用斜线替换下划线”算法。因为Zend Framework以不同的方式命名它的控制器,并且因为Magento使用Zend的部分并且受到Zend的启发,所以它的控制器以Zend约定命名并放在controllers
文件夹中,这意味着标准自动加载例程将不起作用。
它最终会在Magento的routing process中自动包含控制器类,但不会由PHP自动加载器包含。相反,有自定义PHP代码来处理这个问题。
因此,在路由期间,因为您告诉Magento使用您的控制器而不是Magento的控制器来处理特定请求,所以它是唯一包含的控制器。
最好的猜测是,对控制器覆盖的请求让原始开发人员措手不及,尽管他们很乐意陪审团设置路由解决方案,但重构控制器自动加载代码并不是优先考虑的问题。