Magento url 路由 : how to locate the controller/views for a given url

标签 magento templates model-view-controller routes

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

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

为了安全起见,我只是在上面放了一个测试域名,但一般来说,我只是想找到上面 url 的文件( View / Controller )。我是 magento 的新手。

最佳答案

这很复杂,但一般来说,Magento URLs 分为三部分(Zend Framework 1 风格)

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

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

例如,带有 catalogsearch 的 URL 的 Controller 因为前面的名字可以在

#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 的下一部分定义了 Controller 名称。 Controller 名称决定 Controller 文件夹中的特定 Controller 文件。同样,在您的示例中, Controller 名称是 result , 所以你可以在下面的文件中找到 Controller ( ResultController.php )

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

最后, Action 名称决定了 Magento 将调用 Controller 中的哪个方法。在您的示例中,没有操作名称,因此 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 调试扩展,包含有关加载页面的特定 Controller 的信息。

enter image description here

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

希望对您有所帮助!

关于Magento url 路由 : how to locate the controller/views for a given url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30825472/

相关文章:

php - 在 magento 中点击计数器

php - Magento 集合 : field occurrence counting

magento - Algolia 在 Magento 中重新索引

c++ - 为什么 CRTP 实现和接口(interface)方法的命名不同?

php - Zend Framework 2 - DI 并且必须将表适配器注入(inject)表中......乏味吗?

asp.net-mvc - 反序列化 JSON 时 MVC3 RTM 失败数字类型强制

javascript - Geddy.js - 在没有布局的情况下渲染部分 View ,可能吗?

php - 如何清理 Magento 缓存?

c++ - 身份别名模板可以作为转发引用吗?

c++ - 在实例上调用时未找到模板类中的模板成员函数