indexcontroller의 작업에 대한 친숙한 URL을 만들기 위해 zend_controller_router_route 사용
-
18-09-2019 - |
문제
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',
))
);
제휴하지 않습니다 StackOverflow