indexcontroller의 작업에 대한 친숙한 URL을 만들기 위해 zend_controller_router_route 사용

StackOverflow https://stackoverflow.com/questions/2410964

문제

INDEXCONTROLLER에는 현재 INDEXACTION (HOMEPAGE), 로그인 및 로그 아웃 ACTIOM이 있습니다. URL에서 "/index/"를 제거하여 domain.com/index/login 대신 domain.com/login을 얻으려고합니다.

이것을 달성하는 가장 깨끗한 방법은 무엇입니까? 우리가 사용할 수있는 정수가 있습니까? URL에서 / 색인 / 원하지 않습니다.

개선 될 수 있다고 생각하는 현재 솔루션은 다음과 같습니다. 또한 addroute ()의 첫 번째 매개 변수는 무엇을합니까?

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initViewHelpers()
  {
    $front  = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();
    $router->addRoute('login',
      new Zend_Controller_Router_Route('login/*', array(
        'controller' => 'index',
        'action'     => 'login'
      ))
    );
    $router->addRoute('logout',
      new Zend_Controller_Router_Route('logout/*', array(
        'controller' => 'index',
        'action'     => 'logout'
      ))
    );
  }
}
도움이 되었습니까?

해결책

부과 할 것이 없으며 모든 행동을 위해 경로를 만들어야합니다. 이를 통해 코드를 수정하지 않고 경로 기본값 (모듈/컨트롤러/액션)을 변경할 수 있습니다.

첫 번째 매개 변수는 경로 이름이며, 뷰에서 URL () 도우미와 함께 사용해야합니다.

<a href="<?php echo $this->url(array(), 'login', true); ?>">Login</a>

업데이트. URL에서 "index"없이 하나의 경로 만 원하는 경우 이러한 경로를 사용할 수 있습니다.

$router->addRoute('default',
  new Zend_Controller_Router_Route(':action/*', array(
    'controller' => 'index',
  ))
);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top