2013-10-03 4 views
0

검색 모듈에서 작업 중입니다. 일부 항목을 검색 할 때 해당 항목의 슬러그는 쿼리 문자열로 url에 전달되지만 명명 된 매개 변수로 변환하려고합니다. 이를 위해 urlToNamed() 작업을 사용자 지정 구성 요소 RedirectComponent.php에서 만들었습니다. 내 코드는 다음과 같습니다cakephp 컨트롤러에서 리디렉션이 작동하지 않습니다.

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. 
} 

문제는 내 URL 후 데이터가 내가 http://localhost/esolutions/books/index/category:Books 같은 명명 된 매개 변수로 변환 할 필요가 http://localhost/esolutions/books/index?category=Books에 같은 쿼리 문자열로입니다 검색 할 수 있습니다.

또 다른 문제는

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

가 작동하지 않는 것입니다. 제안을하십시오. 미리 감사드립니다. 명명 된 매개 변수에 쿼리 문자열 매개 변수를 변경해야하는 경우

+0

왜 쿼리 문자열 매개 변수를 명명 된 매개 변수로 변환해야합니까? 컨트롤러 동작에서도 쿼리 문자열 매개 변수를 사용할 수 있습니다. –

+0

실제로 slug (명명 된 매개 변수 사용)를 사용하여 BooksController의 모든 제품을 표시하고 있습니다. 그 이유는 내가 검색 기능을 변경하고 싶지 않기 때문입니다. – yolla

답변

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 
} 

원하는 URL에 301 리디렉션을 수행합니다 그/해결책/책/색인 /? category = foo to /esolutions/books/index/category : foo.

+0

귀하의 노력에 감사드립니다. 코드가 작동하고 있으며 게시 한 코드도 작동합니다. 실제로 problom은 리디렉션 기능이 제 컨트롤러에서 작동하지 않습니다. 하지만 이제 괜찮아. – yolla

+0

도움이 될 수있어서 기쁩니다. –

관련 문제