2

초보자 젠드 프레임 워크 개발자는 젠드 라우팅 문제에 대한 간단한 해결책을 찾으려합니다. 당신 중 한 명은 손을 빌려 줄 수 있습니다.컨트롤러/액션을 작성할 때 Zend_Navigation이 Zend_Router와 호환되지 않습니까?

75 % 정적 HTML 페이지 내용과 몇 개의 컨트롤러가 포함 된 웹 사이트 (Zend_Navigation을 사용하여 Zend Framework에 내장 됨)가 있습니다. 최상위 레벨 탐색은 Zend_Navigation에 내장되어 있으며 partial을 통해 반복됩니다.

내 작업으로 인해이 줄 (많은 정적 페이지 포함)을 따라 많은 사이트를 구축하므로이 권한을 얻고 싶습니다. 이 정적 페이지 각각에 대해 컨트롤러와 작업을 설정하고 싶지 않습니다. (많은 경우) Zend_Controller_Router_Route을 사용하여 모든 정적 컨텐츠를 자동으로 StaticController으로 라우팅하는 솔루션을 만들고 싶습니다. 어떤 종류의 디렉토리에서 URL의 컨트롤러/액션 페어링을 기반으로 .phtml 페이지를 포함하거나 렌더링 할 수 있습니다. /layouts/staticpages

SEO 및 다양한 이유 때문에 컨트롤러의 URL에 페어링하지 않으려 고합니다. 정적 페이지가 /static/page/page1로 볼 수 ... 그것은 /section/page (. 예를 들어 advantages/someadvantage)의 "실제 설명"여기

이 문제가되어야합니다 :사용은 올바른 경로를 설정할 때 작업을 수행 할 수 있지만 Zend Navigation으로 무언가를 엉망으로 만든다. Zend_Navigaion이 on-the-fly 컨트롤러/액션 전환과 잘 맞지 않기 때문이다.

코드 예제 :이 충분히 절을 "장점"의 페이지를 전환하는 작업을 처리하지만, Zend_Navigation의 자동 컨트롤러/액션 쓰기 및 "활성"노드의 강조 표시가 끝나는

$router = Zend_Controller_Front::getInstance()->getRouter(); 
$route = new Zend_Controller_Router_Route('advantages/:page/*', 
    array('controller' => 'static', 'action' => 'display', 'mode' => 'advantages', 
    'page' => 'index')); 
$router->addRoute('advantages', $route); 

모든 나사되는 이는 컨트롤러가 "정적"이고 동작이 "디스플레이"라고 생각하기 때문입니다.

Zend_Navigation은 근본적으로 Zend_Controller_Router_Route과 호환되지 않습니까? 이 단일 정적 페이지 컨트롤러를 사용하거나 보드 전체에서 정적 컨텐츠를 처리하는 더 좋은 방법이 있습니까?

+0

Zend_Navigation에 페이지를 추가하는 방법의 예를 포함하도록 질문을 편집 할 수 있습니까? –

답변

0

모든 정적 페이지에 대해 하나의 컨트롤러/액션을 사용하고 있으므로 Zend Navigation을 사용자 정의해야 표시 할 수 있습니다.

체크 Example 4 in the Zend Documentation.

// the following route is added to the ZF router 
Zend_Controller_Front::getInstance()->getRouter()->addRoute(
    'article_view', // route name 
    new Zend_Controller_Router_Route(
     'a/:id', 
     array(
      'module'  => 'news', 
      'controller' => 'article', 
      'action'  => 'view', 
      'id'   => null 
     ) 
    ) 
); 

// a page is created with a 'route' option 
$page = new Zend_Navigation_Page_Mvc(array(
    'label'  => 'A news article', 
    'route'  => 'article_view', 
    'module'  => 'news', // required for isActive(), see note above 
    'controller' => 'article', // required for isActive(), see note above 
    'action'  => 'view', // required for isActive(), see note above 
    'params'  => array('id' => 42) 
)); 

// returns: /a/42 
$page->getHref();