dav*_*ave 2 model-view-controller routing templates magento
我是magento的新手,我正在尝试根据此网址查找文件/代码:
somedomainfortesting.com/index.php/catalogsearch/result/?q=test
Run Code Online (Sandbox Code Playgroud)
为了安全起见,我只是在上面放了一个测试域名,但总的来说我只是想找到上面的url文件(views/controller).我是magento的新手.
它很复杂,但一般来说,Magento URL有三个部分(Zend Framework 1样式)
http://somedomainfortesting.com/index.php/front-name/controller-name/action-name
Run Code Online (Sandbox Code Playgroud)
"正面名称"通常标识您可以在其中找到控制器的模块文件夹.
例如,catalogsearch可以在中找到带有作为前缀名称的URL的控制器
#File: app/code/core/Mage/CatalogSearch/controllers/
Run Code Online (Sandbox Code Playgroud)
你知道这个,因为在Mage_CatalogSearch配置文件中,有一个配置的frontname(<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>
Run Code Online (Sandbox Code Playgroud)
URL的下一部分定义了控制器名称.控制器名称确定controllers文件夹中的特定控制器文件.同样,在您的示例中,控制器名称是result,因此您可以在以下文件中找到控制器(ResultController.php)
app/code/core/Mage/CatalogSearch/controllers/ResultController.php
Run Code Online (Sandbox Code Playgroud)
最后,操作名称确定Magento控制器中的哪个方法将调用.在您的示例中,没有操作名称,因此Magento默认使用名称index,这意味着它indexAction被称为
#File: app/code/core/Mage/CatalogSearch/controllers/ResultController.php
public function indexAction()
{
//...
}
Run Code Online (Sandbox Code Playgroud)
您将注意到上面我使用了通常标识的术语- 这是因为有很多其他情况,其中多个模块可以声明一个前线名称,或者用户可以重写URL以转到别处.如果你有兴趣学习更多并深入挖掘 - 我原来的Magento for PHP MVC Developers博客系列仍然是一个很好的起点(内容已过时,但仍然准确).如果你之后没有受伤和殴打,你可以阅读In Depth Magento Dispatch,其中介绍了Magento如何处理URL路由,从上到下.
最后,还有一点自助,你可以检查Commerce Bug - 它是我的商业Magento调试扩展,并包含有关加载页面的特定控制器的信息.

您可以使用免费演示轻松查看Magento默认值,如果您认为它值得/有用,可以为您自己的系统购买副本.
希望有所帮助!