I need to create urls for category switching, switching category should reset page to 1st and change cat name but keep rest of url params.

Example of url:

http://example.com/cat/fruits/page/3/q/testquery/s/date/t/kcal/mine/26/maxe/844/minb/9/mint/4/maxt/93/minw/7/minbl/6/maxbl/96

Urls can contain many different params but category name and page should be always first, category without page should work too and show 1st page.

Currently I have defined two routes and I'm using Zend's url helper with named route but it resets params and as end resuls I have /cat/cat_name/page/1 url.

$category_url = $view->url(array('category'=>$list_item['url'],'page'=>1),'category',FALSE)


resources.router.routes.category_main.route = "/cat/:category/*"
resources.router.routes.category_main.defaults.module = "ilewazy"
resources.router.routes.category_main.defaults.controller = "index"
resources.router.routes.category_main.defaults.action = "results"
resources.router.routes.category_main.defaults.category = 
resources.router.routes.category_main.defaults.page = 1

resources.router.routes.category.route = "/cat/:category/page/:page/*"
resources.router.routes.category.defaults.module = "ilewazy"
resources.router.routes.category.defaults.controller = "index"
resources.router.routes.category.defaults.action = "results"
resources.router.routes.category.defaults.category = 
resources.router.routes.category.defaults.page = 1

Do I need to create custom method for assembling url in this case?

有帮助吗?

解决方案 2

Solution is very simple, one just have to pass all current request params to url helper (and optionaly overwrite/add some of them, page and category in my case), last variable is set to FALSE to prevent route resetting.

$view->url(
        array_merge(
                $params,
                array('category' => $list_item['url'],
                'page' => 1)
                ),
                'category_main', 
             FALSE
            );

其他提示

Things I would try:

  1. Add module, controller and action params in $urlOptions (it's the first array you pass to the view helper)
  2. instead of 'category' route name try null and see what that does for you.
  3. Try removing this line "resources.router.routes.category.defaults.category = "

Please specify what version are of zf are you using.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top