私は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