Маршруты Zend Framework с дружественными параметрами ajax - PullRequest
0 голосов
/ 06 мая 2009

Я создаю REST API с помощью Zend Framework. У меня есть настройки маршрутов, которые отображаются на все ресурсы, которые я смоделировал. Я также создал плагин контроллера RESTful для направления различных типов запросов (PUT, GET и т. Д.) На правильное действие контроллера.

Я делаю ajax-вызовы с помощью jQuery, и по умолчанию он добавляет параметры GET к URL-адресу для ajax-вызова. Я хочу передать эти параметры в качестве фильтров на моих ресурсах.

Как я могу заставить Zend Framework передавать эти параметры в мои контроллеры? Надеюсь, не нужно писать плагин контроллера, чтобы эта работа ...

Рабочий URL

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 голосов
/ 08 мая 2009

Вы можете получить доступ к этим параметрам, используя:

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

на вашем контроллере. И для вашего удобства, чтобы получить доступ к этим параметрам, вы можете использовать:

$array = parse_url($params, PHP_URL_QUERY);

Я думаю, вам не нужен собственный маршрут, чтобы сделать эту работу. Надеюсь, это поможет вам.

0 голосов
/ 12 мая 2009

изменение правила перезаписи 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

0 голосов
/ 06 мая 2009

Возможно, вы захотите изменить ваши Ajax-вызовы, чтобы параметры были отправлены в скрипт:

$.get("/catalog/", { max_results: "20", start_index: "5" } );
$.post("/catalog/", { max_results: "20", start_index: "5" } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...