我正在使用 Zend Framework v2.2.0 构建一个应用程序,并且我正在为每个部分创建不同的模块。
在一个名为 的模块中Company
,有这样一条路线:
'company_wines' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/:slug_company/:action/',
'constraints'=>array(
':slug_company'=>'[a-zA-Z0-9\-_]+',
':action'=>'(wines|red\-wines|white\-wines|sparkling\-wines|dessert\-wines|rose\-wines){1}',
),
'defaults' => array(
'controller' => 'Company\Controller\Company',
),
),
),
在另一个名为 的模块中Vineyard
,我有这条路线:
'vineyard_page' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/vineyard/:slug_vineyard/',
'constraints'=>array(
':slug_vineyard'=>'[a-zA-Z0-9\-_]+',
),
'defaults' => array(
'controller' => 'Vineyard\Controller\Vineyard',
'action' => 'vineyard',
),
),
),
当我使用 url 等进行测试时domain.ext/Company-name/red-wines/
,domain.ext/Company-name/white-wines
会Company
调用控制器。
如果我用 测试domain.ext/vineyard/Vineyard-name/
,Vineyard
控制器没有被调用,仍然被调用,Company
并且错误消息说控制器无法调度请求。当然VineyardnameAction()
,CompanyController
课堂上没有调用方法。
我期待路由与正则表达式上指定:action
的值列表:slug_company
匹配vineyard
Vineyard-name
如果我用 测试:action
正则表达式preg_match_all
,则在像domain.ext/vineyard/Vineyard-name/
.
如果我禁用Company
模块或删除company_wines
路线,vineyard
路线正在工作。
我已经解决了为每种葡萄酒类型创建不同的路线,但我想了解我做错了什么:)