:Zend2 라우팅 __NAMESPACE__가 작동하지 않거나 무시
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController',
),
),
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index',
),
),
),
'application' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/application',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
),
),
라우팅를 들어 home
잘 작동합니다. 하지만 http://localhost/application
내가 얻을 :
및 http://localhost/application/index/index
내가 얻을 :
지수 (잘못된 컨트롤러 클래스 나에 해결합니다
이에인덱스 (색인 무효 컨트롤러 클래스 또는 별칭으로 확인) 별칭 : 색인)
'application' => array( 'type' => 'Zend\Mvc\Router\Http\Literal', 'options' => array( 'route' => '/application', 'defaults' => array( '__NAMESPACE__' => 'Application\Controller', 'controller' => 'Index', 'action' => 'index', ), ),
:
'application' => array( 'type' => 'Zend\Mvc\Router\Http\Literal', 'options' => array( 'route' => '/application', 'defaults' => array( 'controller' => 'Application\Controller\Index', 'action' => 'index', ), ),
당신은 내가 이것을 사용하는 경우가
home
URL처럼 잘 작동합니다
http://localhost/application
에 대해 확실히 알다시피 :'controllers' => array( 'invokables' => array( 'index' => 'Application\Controller\IndexController', ), ),
당신은 구성을 알고 병합 될 것이고 프로젝트에 인덱스 컨트롤러가 하나만 있어야합니다.
왜 줄을
'__NAMESPACE__' => 'Application\Controller',
무시하고 컨트롤러 배열에서 색인이나 색인을 찾습니다.편집 :
Application/Module.php
이 추가 다른 프로젝트에 비해으로:
public function onBootstrap(MvcEvent $e) { $eventManager = $e->getApplication()->getEventManager(); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->attach($eventManager); }
와 지금 작동하지만 내가 필요하고 설명. 그것은 해결책인가? 나는 프로젝트의
Module.php
파일 중 하나에 이것을 추가하여 라우팅 규칙을 올바르게 작성해야합니까? 왜 없으면 라우팅 규칙에서__NAMESPACE__
이 무시 될까요?
Thx이므로 ModuleRouteListener를 사용하지 않고 __NAMESPACE__을 (를) 확인하지 않으시겠습니까? –
@ S.Gholizadeh 정확히 – Wilt