我有一个名为 AjaxController 的简单控制器,
<?php
class AjaxController extends Zend_Controller_Action {
public function init() {
$params = $this->_getAllParams();
Zend_Debug::dump($params);
}
public function cartAction() {
$params = $this->_getAllParams();
Zend_Debug::dump($params);
}
}
?>
我从 jQuery调用这个 URL - http://example.com/ajax/cart ,如下所示:
$.post(base_path + "ajax/cart/", { },
function(data) {
alert("Data Loaded: " + data);
});
通过 jQuery 调用/直接访问 URL 时出现 404 错误(未找到操作)
我单独得到以下输出(对于 init 函数):
array(4) {
["controller"] => string(4) "ajax"
["action"] => string(3) "get"
["id"] => string(4) "cart"
["module"] => string(7) "default"
}
这里的 action 是“get”,“cart”进入 ID(就像 Zend Rest Route)。相反,动作名称应该是“购物车”。这里有什么问题?
如果我通过 ini 文件添加以下路由,则该路由可以正常工作:
routes.about.type = "Zend_Controller_Router_Route_Static"
routes.about.route = "ajax/cart"
routes.about.defaults.controller = "ajax"
routes.about.defaults.action = "cart"
但是我不能为每个控制器中的所有操作添加这样的路由。
我创建了一个测试控制器来测试它。
<?php
Class TestController extends Zend_Controller_Action {
function indexAction() {
echo "Index"; exit();
}
function testAction() {
echo "Test"; exit();
}
}
?>
只有索引操作有效。测试操作不起作用(抛出 EXCEPTION_NO_ACTION 异常)
Zend 框架版本 - 1.12.0