cakephp控制器中的重定向不起作用

时间:2013-10-03 10:45:09

标签: cakephp

我正在研究搜索模块。当我搜索某个项目时,该项目的slug作为查询字符串在url中传递,但我想将其转换为命名参数。为此,我在自定义组件RedirectComponent.php中创建了一个urlToNamed()操作。我的代码是:

 RedirectComponent.php

 function urlToNamed() {
    $urlArray = $this->controller->params->query;
    if(!empty($urlArray)){
        #remove unset values
        $urlArray = array_filter($urlArray);
        $this->controller->redirect($urlArray);
    }
}     

 I am calling the urlToNamed() action from index action of BooksController.php i.e


 public function index() { 
    $this->Redirect->urlToNamed();

    //All other stuff to handle named parameter data and show result.
 }

问题是我的网址搜索后的数据是http://localhost/esolutions/books/index?category=Books之类的查询字符串,我必须将其转换为http://localhost/esolutions/books/index/category:Books之类的命名参数。

另一个问题是

 $this->controller->redirect($urlArray);

无效。请提出任何建议。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您需要将查询字符串参数更改为命名参数,那么我只需将此功能添加到您的index()操作中:

public function index($category = null) {
    if (isset($this->request->query['category'])) {
        $this->redirect(array('category' => $this->request->query['category']), 301);
    }

    // rest of index code as normal
}

这将对 / esolutions / books / index /?category = foo 等任何网址执行301重定向到 / esolutions / books / index / category:foo