2

私は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);
    }
}

?>

そして私はこのURLを呼んでいます-以下のようにjQueryから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"
}

ここでのアクションは「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例外をスローする)

ZendFrameworkバージョン-1.12.0

4

1 に答える 1

0

私自身の質問に答える(実際の答えはBas van Dorstによるコメントにあります)

ブートストラップにZend_Rest_Routeコードがありましたが、古いコードから削除するのを忘れていました。そのコードを削除した後、デフォルトルートが機能し始めました。

于 2012-09-10T09:26:52.500 に答える