Magento url routing:如何定位给定URL的控制器/视图

时间:2015-06-14 02:35:15

标签: magento templates model-view-controller routing

我是magento的新手,我正在尝试根据此网址查找文件/代码:

somedomainfortesting.com/index.php/catalogsearch/result/?q=test

出于安全考虑,我只是将测试域名放在上面,但一般情况下,我只是想找到上述网址的文件(views / controller)。我是magento的新手。

2 个答案:

答案 0 :(得分:5)

这很复杂,但一般来说,Magento URL有三个部分(Zend Framework 1样式)

http://somedomainfortesting.com/index.php/front-name/controller-name/action-name

“正面名称”通常标识您可以在其中找到控制器的模块文件夹。

例如,可以在

中找到以catalogsearch作为前缀的URL的控制器
#File: app/code/core/Mage/CatalogSearch/controllers/

你知道这一点,因为在Mage_CatalogSearch配置文件中,有一个配置的前面名称(<frontName>catalogsearch</frontName>

#File: app/code/core/Mage/CatalogSearch/etc/config.xml
    <routers>
        <catalogsearch>
            <use>standard</use>
            <args>
                <module>Mage_CatalogSearch</module>
                <frontName>catalogsearch</frontName>
            </args>
        </catalogsearch>
    </routers>    

URL的下一部分定义了控制器名称。控制器名称确定controllers文件夹中的特定控制器文件。同样,在您的示例中,控制器名称为result,因此您可以在以下文件中找到控制器(ResultController.php

app/code/core/Mage/CatalogSearch/controllers/ResultController.php 

最后,操作名称确定Magento控制器中的哪个方法将调用。在您的示例中,没有操作名称,因此Magento默认使用名称index,这意味着名为indexAction的名称为

#File: app/code/core/Mage/CatalogSearch/controllers/ResultController.php
public function indexAction()
{
    //...
}

上面你会注意到我使用的术语通常标识 - 这是因为有很多额外的情况,多个模块可以声明一个前线名称,或者用户可以重写URL去其他地方。如果你有兴趣学习更多并深入挖掘 - 我的原始Magento for PHP MVC Developers blog series仍然是一个很好的起点(内容已过时,但仍然准确)。如果你之后没有受伤和殴打,你可以阅读In Depth Magento Dispatch,其中包括Magento如何处理URL路由,从上到下。

最后,还有一点自助,你可以结账Commerce Bug - 这是我的商业Magento调试扩展,并包含有关加载页面的特定控制器的信息。

enter image description here

如果您认为值得/有用,您可以使用免费演示轻松查看Magento默认值,并使用buy a copy自己的系统。

希望有所帮助!

答案 1 :(得分:1)

此外,您可以通过启用此处的路径匹配来找到模板,即渲染内容:系统&gt;配置&gt;开发人员,将配置范围更改为默认存储视图,然后查找路径提示设置并启用它。