2012-05-16 1 views
0

나는 약간의 시간 이후로 프로젝트를 작성해 왔고 기본 라우팅 인 : module : : controller : \ : action을 사용했습니다. 약간의 시간 후, 나는처럼 내 설정에 일부 라우터를 추가했습니다 :일부 경로를 정의한 후 Zend Framework의 기본 라우팅

resources.router.routes.page.route = "page/:slug" 
resources.router.routes.page.defaults.module = "default" 
resources.router.routes.page.defaults.controller = "pages" 
resources.router.routes.page.defaults.action = "view" 
resources.router.routes.page.defaults.slug = "" 

하지만 그 후, 나는 다른 모든 링크가 일부를 무시 새로운 경로 중 하나를보기 URL 도우미에 의해 생성 된 일부 링크를 클릭하면 주어진 매개 변수의. 예, 내가있어 경로 : 내가 링크/프로젝트/테스트에 가면

resources.router.routes.project.route = "project/:slug" 
resources.router.routes.project.defaults.module = "projects" 
resources.router.routes.project.defaults.controller = "projects" 
resources.router.routes.project.defaults.action = "view" 
resources.router.routes.project.defaults.slug = "" 

다음과 같이 링크 :

$this->url(
    array('module' => 'admin', 'action' => 'list-users', 'controller' => 'users') 
, null,true 
); 

이 "/ 프로젝트"에 있습니까 가리 킵니다 맞춤 경로 위에 기본 경로를 유지할 수 있습니까? 기본 라우터와 동일한 기본 라우터를 추가 할 수 있습니까? 아마 뭔가 간단 할 지 모르겠지만 요점을 놓친 것 같습니다. 모든 도움에 감사드립니다.

이 같은 있지만 효과가 뭔가를 추가했습니다 :

resources.router.routes.default.route = ":module/:controller/:action" 
resources.router.routes.default.defaults.module = "default" 
resources.router.routes.default.defaults.controller = "pages" 
resources.router.routes.default.defaults.action = "view" 
resources.router.routes.default.defaults.slug = "" 
+0

"dont work"를 정의하십시오 - 오류가 발생합니까, 아니면 링크가 잘못된 위치를 가리 킵니까? –

+0

좋아, 좀 더 많은 정보를 추가했습니다 –

+1

URL 도우미에 대한 두 번째 매개 변수로 'default'를 전달하면 null이됩니다. 차이가 있습니까? –

답변

0

당신이 사용자 정의 라우팅을 설정하기 위해서는, 당신은 라우터 구성 요소를 얻고 그것으로 당신의 경로를 통과해야합니다.

이것은 내가 작업하고있는 프로젝트에서 내가 한 일입니다. 당신의 부트 스트랩 클래스에서는 다음과 같은 기능

protected function _initRoutes() 
{ 
    $this->bootstrap('frontcontroller'); 
    $front = Zend_Controller_Front::getInstance(); 
    $router = $front->getRouter(); 
    $myRoutes = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini','production'); 
    $router->addConfig($myRoutes,'routes'); 

이 전면 컨트롤러를 호출하고 그것에서 라우터를 얻을 수를 만들 수 있습니다. 그런 다음 내 경로 구성을 전달합니다.

이 질문에 대한 답변을 보내주십시오. 당신이 $namenull에, 현재 경로 ('project')을 사용 설정하면, 따라서

url($urlOptions, $name, $reset) 

:

+0

리소스를 통해 application.ini에 추가하는 것과 같습니다. 나는 두 가지 방법으로 쟁점을 쌓았다. –

0

문제는 URL 도우미에 대한 옵션은 다음과 같습니다이다. 이벤트 설정이 아닌 $reset ~ true이 도움이 될 것입니다. null'default'으로 바꾸면 제대로 작동합니다.

관련 문제