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

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

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

最佳答案

这很复杂,但是一般来讲,Magento URL包含三个部分(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 名称确定controllers文件夹中的特定 Controller 文件。同样,在您的示例中, Controller 名称为result,因此您可以在以下文件(ResultController.php)中找到 Controller 。
app/code/core/Mage/CatalogSearch/controllers/ResultController.php

最后,动作名称确定 Controller 将调用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调试扩展,其中包括有关所加载页面的特定 Controller 的信息。

您可以使用免费的演示程序轻松查看Magento的默认值,并在自己的系统上查看buy a copy(如果您认为这样做值得/有用)。

希望有帮助!

关于magento - Magento URL路由:如何找到给定URL的 Controller / View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30825472/

10-17 00:32