2009-09-30 4 views
0

젠드 프레임 워크의 표준 라우터를 사용하여 시스템의 대부분의 URL을 라우팅하고 있습니다. Zend_Controller_Router_Route 및 URL 뷰 도우미를 사용할 때 urlencode() 오류가 발생했습니다.

은 하나 개의 특정 URL, 나는 예를 들어

(실제 컨트롤러에 추가로) 컨트롤러 별명을 통해 액세스 할.

실제 URL :

/mymodule/mycontroller/myaction/* 

별칭 URL :

/mymodule/mycontrolleralias/myaction/* 

mycontrolleralias 진짜 컨트롤러가 아닌,하지만 난 어떤 MYCONTROLLER하는 노선이 요청 (검색어 매개 변수 및 모든)

을 원하는

이렇게하려면이 경로를 설정하려고 시도했습니다.

$router->addRoute('controlleralias', new Zend_Controller_Router_Route(
    ':module/mycontrolleralias/:action/*', 
    array(
     'module'  => 'mymodule', 
     'controller' => 'mycontroller', 
     'action'  => 'myaction' 
    ) 
)); 

하지만 내보기 도우미에서 16,나는 URL을 만들려고하면은 :

urlencode() expects parameter 1 to be string, array given 

#0 [internal function]: __lambda_func(Array) 
#1 /library/Zend/Controller/Router/Route.php(398): urlencode(Array, false, true) 
#2 /library/Zend/Controller/Router/Rewrite.php(441): Zend_Controller_Router_Route->assemble(Array, NULL, false, true) 
#3 /library/Zend/View/Helper/Url.php(49): Zend_Controller_Router_Rewrite->assemble(Array) 

내 사용자 정의 경로에서 별표 (*)를 제거 할 경우 오류 :

$this->view->url(array('sort' => array('param1','param2'))); 

오류가 발생합니다 가 발생하지만 쿼리 매개 변수와 일치하지 않으므로 내보기에서 생성 된 URL이 올바르지 않습니다.

$router->addRoute('controlleralias', new Zend_Controller_Router_Route(
    ':module/mycontrolleralias/:action', 
    array(
     'module'  => 'mymodule', 
     'controller' => 'mycontroller', 
     'action'  => 'myaction' 
    ) 
)); 

위와 같이 불행히도

$this->view->url(array('sort' => 'param1')); 

내가 '정렬'의 배열에 전달해야 할

: I는 매개 변수 배열되지 통과 할 그것은 오류가 발생하지

내가 뭘 잘못하고 있는지 아는 사람이 있습니까? 아마도 이것을 달성하는 더 쉬운 방법이 있을까요? 이로를 urlencode를 기반으로하고 있기 때문에

나는

또한
$this->view->url(array('sort' => 'param1,param2'),'controlleralias'); 

매개 변수 배열이 될 수 없습니다, 당신이 그런 일을해야한다고 생각 젠드 프레임 워크 1.9.0

답변

0

을 사용하고 있습니다.

+0

감사합니다.하지만 여전히 오류가 발생합니다. 나는 또한 'sort'에 대한 값 배열을 전달하지 않으면 발견된다. (업데이트 된 질문 참조) – asgeo1

+0

예. 죄송합니다. 매개 변수는 배열이 될 수 없습니다. – RageZ

+0

표준 라우터는 매개 변수 값에 대한 배열을 지원하지만, 올바른 URL을 생성합니다. 그러나 commar-seperated 값을 사용하면 정확한 URL이 작성되지 않습니다. 나는./mymodule/mycontrolleralias/myaction/sort/param1/sort/param2 대신 mymodule/mycontrolleralias/myaction/sort/param1 % 2Cparam2를 얻습니다. 그냥 다르게 처리하는 것처럼 보이는 Zend_Controller_Router_Route 일뿐입니다. 내 별칭 경로를 만드는 방법 :( – asgeo1

관련 문제