Как я могу добавить домашнюю страницу по умолчанию в маршрутизации?
мой маршрут работает, когда я получаю доступ к этому URL {myapp} / modulename / controllername
но когда я получаю доступ к этому {myapp} / modulename, он возвращает 404.
Как я могу это исправить?
возвращаемый массив ( 'controllers' => array ( 'invokables' => array ( 'Modulename \ Controller \ Mycontroller' => 'Modulename \ Controller \ TheController', ), ), 'router' => array ( «маршруты» => массив ( 'modulename' => array ( 'type' => 'Literal', 'options' => array ( 'route' => '/ modulename', 'defaults' => массив ( '__NAMESPACE__' => 'Modulename \ Controller', 'controller' => 'My', 'action' => 'index', ), ), 'may_terminate' => true, 'child_routes' => массив ( 'thechild' => массив ( 'type' => 'Segment', 'options' => array ( 'route' => '[/: controller] [/: action] [/: id]', 'ограничений' => массив ( 'controller' => '[a-zA-Z] [a-zA-Z0-9 _-] *', 'action' => '[a-zA-Z] [a-zA-Z0-9 _-] *', 'id' => '[0-9] *', ), 'defaults' => массив ( '__NAMESPACE__' => 'Modulename \ Controller', 'controller' => 'User', 'action' => 'index', ), ), ), ), ), ), ), 'view_manager' => массив ( 'template_path_stack' => array ( 'users' => __DIR __. '/ .. / view', ), 'display_exceptions' => true, ), );
'Modulename\Controller\Mycontroller' => 'Modulename\Controller\TheController',
Здесь вы использовали имя контроллера «TheController»
'defaults' => array(
'__NAMESPACE__' => 'Modulename\Controller',
'controller' => 'My',
'action' => 'index',
),
Но здесь вы указали имя контроллера «Мой».
Измените здесь ‘controller’ => ‘The’ и проверьте
Если имя вашего контроллера «UserController», измените
'Modulename\Controller\Mycontroller' => 'Modulename\Controller\TheController',
as
'Modulename\Controller\User' => 'Modulename\Controller\UserController',
and
'defaults' => array(
'__NAMESPACE__' => 'Modulename\Controller',
'controller' => 'My',
'action' => 'index',
),
as
'defaults' => array(
'__NAMESPACE__' => 'Modulename\Controller',
'controller' => 'User',
'action' => 'index',
),
И измените это (после ‘may_terminate’)
'defaults' => array(
'__NAMESPACE__' => 'Modulename\Controller',
'controller' => 'User',
'action' => 'index',
),
),
as
'defaults' => array(),
у вас нет контроллера по имени My
в 'controller' => 'My',
Вы должны изменить имя вызываемого контроллера:
'controllers' => array(
'invokables' => array(
'My' => 'Modulename\Controller\TheController',
),
),
или измените контроллер по умолчанию в определении маршрутов на
'defaults' => array(
'__NAMESPACE__' => 'Modulename\Controller',
'controller' => 'Modulename\Controller\Mycontroller',
'action' => 'index',
),
и это определение маршрута также не является правильным
'route' => '[/:controller][/:action][/:id]',
так должно быть
'route' => '[/:controller[/:action[/:id]]]',
спасибо за ваши ответы, я нашел другой способ, поместив код в module.php
Вот мой код:
if ($ e-> getRouteMatch () -> getMatchedRouteName () == 'modulename') { $ response-> getHeaders () -> addHeaderLine ('Location', $ e-> getRequest () -> getBaseUrl (). '/ modulename / user / index'); $ Response-> setStatusCode (302); }