Zend Framework路由具有ajax友好参数

时间:2009-05-06 04:28:59

标签: jquery api zend-framework rest

我正在使用Zend Framework构建REST API。我有路由设置映射到我建模的所有资源。我还创建了一个RESTful控制器插件,用于将不同类型的请求(PUT,GET等)引导到正确的控制器操作。

我正在使用jQuery进行ajax调用,默认情况下,它会将GET参数附加到ajax调用的URL。我想将这些参数作为过滤器传递给我的资源。

如何让Zend Framework将这些参数传递给我的控制器?希望不必编写控制器插件来使其工作......

工作网址

http://myapp.com/catalog/products/categories/max_results/20/start_index/5

我想要什么

http://myapp.com/catalog/products/categories/?max_results=20&start_index=5

Zend Framework Route

routes.catalog_product_categories.type = "Zend_Controller_Router_Route"
routes.catalog_product_categories.route = "catalog/products/categories/*"
routes.catalog_product_categories.defaults.controller = "categories"
routes.catalog_product_categories.defaults.action = "productcategories"
routes.catalog_product_categories.defaults.RESTful = true

3 个答案:

答案 0 :(得分:0)

也许您可能想要更改Ajax调用以强制将参数发送到脚本:

$.get("/catalog/", { max_results: "20", start_index: "5" } );
$.post("/catalog/", { max_results: "20", start_index: "5" } );

答案 1 :(得分:0)

您可以使用以下方式访问该参数:

$params = $this->getRequest()->getRequestUri();

关于你的控制器动作。为了方便您访问这些参数,您可以使用:

$array = parse_url($params, PHP_URL_QUERY);

我认为您不需要自定义路线来完成这项工作。 希望这可以帮到你。

答案 2 :(得分:0)

将Lighttpd重写规则更改为此修复它:

url.rewrite-once = (
".*\?(.*)$" => "/index.php?$1",
".*\.(js|ico|gif|jpg|png|css)$" => "$0",
"" => "/index.php"
)

http://framework.zend.com/issues/browse/ZF-2901?focusedCommentId=20029#action_20029

相关问题