젠드 프레임 워크의 표준 라우터를 사용하여 시스템의 대부분의 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
감사합니다.하지만 여전히 오류가 발생합니다. 나는 또한 'sort'에 대한 값 배열을 전달하지 않으면 발견된다. (업데이트 된 질문 참조) – asgeo1
예. 죄송합니다. 매개 변수는 배열이 될 수 없습니다. – RageZ
표준 라우터는 매개 변수 값에 대한 배열을 지원하지만, 올바른 URL을 생성합니다. 그러나 commar-seperated 값을 사용하면 정확한 URL이 작성되지 않습니다. 나는./mymodule/mycontrolleralias/myaction/sort/param1/sort/param2 대신 mymodule/mycontrolleralias/myaction/sort/param1 % 2Cparam2를 얻습니다. 그냥 다르게 처리하는 것처럼 보이는 Zend_Controller_Router_Route 일뿐입니다. 내 별칭 경로를 만드는 방법 :( – asgeo1