[英]ZF2 route to controller
我創建了一個名為“ ActividadesPlanificadasController.php”的控制器,並在我的module.config中定義了下一個路由,但它不起作用。
'publico/peticiones-incidencias-planificadas/actividades-planificadas' => array(
'type' => 'Literal',
'options' => array(
'route' => 'publico/peticiones-incidencias-planificadas/actividades-planificadas',
'defaults' => array(
'__NAMESPACE__' => 'Privado\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
//'route' => '/[:controller[/:action[/:id]]]',
'route' => '/[:controller[/:action][/:id/:system]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]*',
'system' => '[a-zA-Z][a-zA-Z0-9_-]*'
//'system' => '[0-9]*'
),
'defaults' => array(
),
),
),
),
),
這些是我的控制器...
'controllers' => array(
'invokables' => array(
'Publico\Controller\Index' => Controller\IndexController::class,
'Publico\Controller\Login' => Controller\LoginController::class,
'Publico\Controller\NoAccess' => Controller\NoAccessController::class,
'Publico\Controller\ActividadesPlanificadas' => Controller\ActividadesPlanificadasController::class
),
),
因為我想使用下一個URL訪問我的控制器: http://gnsys.local/publico/peticiones-incidencias-planificadas/actividades-planificadas
我有下一個錯誤...
發生404錯誤找不到頁面。
請求的控制器無法映射到現有的控制器類。
控制器:Publico \\ Controller \\ PeticionesIncidenciasPlanificadas(解析為無效的控制器類或別名:Publico \\ Controller \\ PeticionesIncidenciasPlanificadas)
沒有例外
我究竟做錯了什么?
編輯1:
我已經更新了我的module.config,它適用於以下路由: http://gnsys.local/publico/actividades-planificadas
module.config:
'publico/actividades-planificadas' => array(
'type' => 'Literal',
'options' => array(
'route' => 'publico/actividades-planificadas',
'defaults' => array(
'__NAMESPACE__' => 'Publico\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
//'route' => '/[:controller[/:action[/:id]]]',
'route' => '/[:controller[/:action][/:id/:system]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]*',
'system' => '[a-zA-Z][a-zA-Z0-9_-]*'
//'system' => '[0-9]*'
),
'defaults' => array(
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'Publico\Controller\Index' => Controller\IndexController::class,
'Publico\Controller\Login' => Controller\LoginController::class,
'Publico\Controller\NoAccess' => Controller\NoAccessController::class,
'Publico\Controller\ActividadesPlanificadas' => Controller\ActividadesPlanificadasController::class
),
),
但是我希望訪問ActividadesPlanificadasController的途徑是: http://gnsys.local/publico/peticiones-incidencias-actividades/actividades-planificadas
如果我將module.config更改為...
'publico/peticiones-incidencias-planificadas/actividades-planificadas' => array(
'type' => 'Literal',
'options' => array(
'route' => 'publico/peticiones-incidencias-planificadas/actividades-planificadas',
'defaults' => array(
'__NAMESPACE__' => 'Publico\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
//'route' => '/[:controller[/:action[/:id]]]',
'route' => '/[:controller[/:action][/:id/:system]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]*',
'system' => '[a-zA-Z][a-zA-Z0-9_-]*'
//'system' => '[0-9]*'
),
'defaults' => array(
),
),
),
),
),
我有錯誤
A 404 error occurred Page not found. The requested controller could not be mapped to an existing controller class. Controller: Publico\\Controller\\PeticionesIncidenciasPlanificadas(resolves to
無效的控制器類或別名:Publico \\ Controller \\ PeticionesIncidenciasPlanificadas)
No Exception available
我仍然在做錯什么?
您指向一個名為'Privado\\Controller\\Index'
但可調用的名稱為'Publico\\Controller\\Index'
。
更改namespace
,使其對應。
Privado -> Publico
要么
Publico -> Privado
或為'Privado\\Controller\\Index'
添加控制器
'invokables' => array(
'Privado\Controller\Index' => //your privado controller,
//...other controllers...
)
還請確保您在正確的名稱空間中具有可調用的控制器類。 因此,如果您這樣注冊:
'invokables' => array(
'Privado\Controller\Index' => 'Privado\Controller\IndexController'
)
您需要在文件夾Privado
- Controller
中的名為IndexController.php
的php文件中創建一個控制器類。
- Privado
- Controller
- IndexController.php
並且該類應具有正確的名稱和名稱空間常量:
<?php
namespace = Privado\Controller;
class IndexController extends ... {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.