我想添加crm作为CRM模块的前缀。
这是我的module.config.php中的路由器部分
'router' => array(
'routes' => array(
'calendar' => array(
'type' => 'segment',
'options' => array(
'route' => '/crm/calendar[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Crm\Controller\Calendar',
'action' => 'index',
),
),
),
当我使用test.dev/crm/calendar/index工作正常时。但它不适用于test.dev/crm/calendar。我找不到任何问题。
当我使用'route' => '/calendar[/:action][/:id]',
时,我可以使用test.dev/calendar。但我需要使用前缀。我该怎么做?
答案 0 :(得分:1)
我认为您可能需要添加'may_terminate' => true,
所以你的路线定义如下:
'calendar' => array(
'type' => 'segment',
'options' => array(
'route' => '/crm/calendar[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Crm\Controller\Calendar',
'action' => 'index',
),
),
'may_terminate' => true,
),
尝试是否有效。
否则你也可以拆分它并使crm成为文字路径。
'crm' => array(
'type' => 'literal',
'options' => array(
'route' => '/crm',
),
'may_terminate' => false,
'child_routes' => array(
'calendar' => array(
'type' => 'segment',
'options' => array(
'route' => '/calendar[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Crm\Controller\Calendar',
'action' => 'index',
),
),
),
),
),
但是这最后一个解决方案意味着您将始终必须路由到crm/calendar
答案 1 :(得分:0)
看到配置应该纠正。 你没试过/(test.dev/crm/calendar,而不是test.dev/crm/calendar /)
答案 2 :(得分:0)
路线配置正确。此路由已从另一个模块路由写入。这就是问题所在。 ZF2并不容易检查所有路线和路径。