嗨,我想创建一个自定义表单来获取用户的输入,我可以从 url 访问表单:
http://localhost/website/index.php/contest
但是当我将它上传到在 magento 中设置了多个网站的服务器时,我无法像以前在本地服务器上那样访问表单。
http://www.website.org/index.php/contest
我被难住了,我撞到了我用谷歌搜索的墙,我只是不知道要寻找什么,任何帮助将不胜感激。提前感谢任何人
嗨,我想创建一个自定义表单来获取用户的输入,我可以从 url 访问表单:
http://localhost/website/index.php/contest
但是当我将它上传到在 magento 中设置了多个网站的服务器时,我无法像以前在本地服务器上那样访问表单。
http://www.website.org/index.php/contest
我被难住了,我撞到了我用谷歌搜索的墙,我只是不知道要寻找什么,任何帮助将不胜感激。提前感谢任何人
Magento 路由是一个要在单个 Stack Overflow 答案中涵盖的大主题。您可以在此处阅读有关设置控制器的基础知识,以及此处可能过于深入的路由过程。
也就是说,这里有一些一般的调试技巧。
Magento 可以看到您的控制器所属的模块吗?如果没有,您可能在app/etc/modules
. (查看`System -> Configuration -> Advanced -> Disable Module Output中的模块列表)
如果您的模块已安装,Magento 可能找不到您的控制器类。Eitehr 因为它不存在,所以你有区分大小写的问题。在函数中添加一些临时调试代码,_validateControllerClassName
以确定 Magento 找不到您的控制器的原因。
您可以在_validateControllerClassName
此处找到该功能
#File: app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
protected function _validateControllerClassName($realModule, $controller)
{
$controllerFileName = $this->getControllerFileName($realModule, $controller);
if (!$this->validateControllerFileName($controllerFileName)) {
return false;
}
$controllerClassName = $this->getControllerClassName($realModule, $controller);
if (!$controllerClassName) {
return false;
}
// include controller file if needed
if (!$this->_includeControllerClass($controllerFileName, $controllerClassName)) {
return false;
}
return $controllerClassName;
}
子句之前的一些var_dump
sreturn false
应该告诉您为什么 Magento 无法找到和/或包含您的控制器类文件。