【问题标题】:Regular MVC routes are treated as REST routes常规 MVC 路由被视为 REST 路由
【发布时间】:2012-09-06 04:46:18
【问题描述】:

我有一个名为 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

【问题讨论】:

  • 列宁怎么了? =) 也发布您的路线配置,所有定义。
  • 嘿@Keyne,很高兴见到你.. 我没有添加任何路由.. 我期待默认的控制器/动作路由工作..
  • 你在一个常见的请求中得到了错误的控制器/动作?没有得到 REST/AJAX 的部分内容。 IIRC,您是说它根本不起作用,甚至删除 ajax...您的问题只是:默认路由器不起作用
  • @Keyne,完全正确.. 默认路由器不起作用.. 使用 TestController 检查.. 只有索引操作有效.. 测试操作无效.. 编辑了我的代码..
  • 你的 Bootstrap 中没有 Zend_Rest 路由吗?或者可能是您的插件的 preDispatch 中的一条特殊路线?

标签: php zend-framework


【解决方案1】:

回答我自己的问题(实际答案在 Bas van Dorst 的评论中)

引导程序中有一个 Zend_Rest_Route 代码,我忘记从旧代码中删除它。 删除该代码后,默认路由开始工作。

【讨论】:

  • 您知道是否可以在同一个应用程序中应用 MVC 和 REST 规则?我尝试将一个特定的模块规则配置为 REST,但所有模块规则最终都以 REST 的形式工作。
猜你喜欢
  • 2013-02-15
  • 1970-01-01
  • 2012-10-06
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多