Php ZF2按主机名路由可与其他模块一起使用
我在我的Php ZF2按主机名路由可与其他模块一起使用,php,zend-framework,routes,zend-framework2,zend-route,Php,Zend Framework,Routes,Zend Framework2,Zend Route,我在我的myhost.com(reseller.myhost.com)上添加了一个reseller子域,并使用它路由到我的reseller模块。请阅读我在此之前发布的问题: 我的经销商路线配置如下所示: 'router' => array( 'routes' => array( 'Reseller' => array( 'type' => 'Hostname', 'options' =>
myhost.com
(reseller.myhost.com
)上添加了一个reseller
子域,并使用它路由到我的reseller
模块。请阅读我在此之前发布的问题:
我的经销商
路线配置如下所示:
'router' => array(
'routes' => array(
'Reseller' => array(
'type' => 'Hostname',
'options' => array(
'route' => 'reseller.myhost.com',
'constraints' => array(
),
'defaults' => array(
'controller' => 'Reseller\Controller\Reseller',
'action' => 'index'
)
),
'may_terminate' => true,
'child_routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'__NAMESPACE__' => 'Reseller\Controller',
'controller' => 'Reseller',
'action' => 'index',
),
),
),
)
)
)
)
我的createdAd
路由在reseller.myhost.com/createdAd上匹配,但我希望来自其他模块的路由在此reseller
子域上不起作用
这是我的广告路线配置
'router' => array(
'routes' => array(
'locate' => array(
'type' => 'segment',
'options' => array(
'route' => '/locate[/:cityName][/:CityId][/:CategoryId][/:categoryName]',
'constraints' => array(
),
'defaults' => array(
'controller' => 'Advertise\Controller\Advertise',
'action' => 'index',
),
),
),
'createAd' => array(
'type' => 'segment',
'options' => array(
'route' => '/createAd[/:subCategoryId]',
'constraints' => array(
),
'defaults' => array(
'controller' => 'Advertise\Controller\Advertise',
'action' => 'createAd',
),
),
),
),
),
));
请注意,我想广告模块的工作没有子域和正常工作,只有分销商模块的工作子域 为什么会出现这种情况?我从您的问题中了解到:您希望
createAd
路由在子域上不起作用。因此,reseller.myhost.com/createdAd
不应该匹配,而是您希望在没有子域的路由上匹配一个myhost.com/createdAd
我建议您为广告
模块创建一个单独的路由定义
您在广告
模块中的路由配置(模块/adversed/config/module.config.php
)
您在分销商
模块中的路线配置(模块/Reseller/config/module.config.php
)
您可以根据子域来区分匹配项
路由home
和createAdd
与播发
模块不带子域匹配
路径reseller.home
与子域reseller.myhost.com
中的reseller
模块中的索引匹配
查看主机名路由示例的更多详细信息。对于所有不在子域路由上的标准路由,您应该有一个“根”主机名。例如:
'router' => array(
'routes' => array(
'myhost' => array(
'type' => 'Hostname',
'options' => array(
'route' => 'myhost.com',
),
),
),
),
'router' => [
'routes' => [
'myhost' => [
'child_routes' => [
'createAd' => array(
'type' => 'segment',
'options' => array(
'route' => '/createAd[/:subCategoryId]',
'constraints' => array(
),
'defaults' => array(
'controller' => 'Advertise\Controller\Advertise',
'action' => 'createAd',
),
),
),
],
],
],
],
现在,您可以将“createAd”路由(和其他路由)添加为“myhost”路由的子路由。例如:
'router' => array(
'routes' => array(
'myhost' => array(
'type' => 'Hostname',
'options' => array(
'route' => 'myhost.com',
),
),
),
),
'router' => [
'routes' => [
'myhost' => [
'child_routes' => [
'createAd' => array(
'type' => 'segment',
'options' => array(
'route' => '/createAd[/:subCategoryId]',
'constraints' => array(
),
'defaults' => array(
'controller' => 'Advertise\Controller\Advertise',
'action' => 'createAd',
),
),
),
],
],
],
],
我不明白是什么问题。你能补充一些细节吗。人们期望什么?发生了什么事?“其他模块”中的路由配置是什么样子的您提到的。@Wilt my firend i expet to route of reseller.myhost.com/createAdvertise dosent work因为在advertise controller中定义了createAdvertise route而不是在Diselliser controller中让我更新我的问题以帮助您完成我更新了我的问题请阅读我更新的问题和最后的2行注意谢谢请注意,我想在没有子域的情况下发布模块工作,并且正常工作,并且只有分销商模块与子域一起工作OK,因此通过此更改,我的路线将更改为home/createAd?因为在我只调用$this->url('createAd')之前,是吗?因此,主要问题尚未解决,我可以路由reseller.myhost.com/createAd