我正在使用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
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
答案 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