gpt4 book ai didi

zend-framework2 - 在 ZF2 路由器配置中的主机名下配置子路由的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 22:45:29 25 4
gpt4 key购买 nike

场景:

有一个名为 fabric 的 zf2 应用程序,它包含两个名为“bike”和“car”的不同模块,并通过以下 url 结构提供相似(但不相同)的功能:

+------------------+-------+-------------------------+-------------+-----------------+--------+
| Hostname | Part | Page | Module | Controller | Action |
+------------------+-------+-------------------------+-------------+-----------------+--------+
| www.fabric.dev | / | Company homepage | Application | IndexController | index |
| bikes.fabric.dev | / | Homepage for bikes | Bike | IndexController | index |
| bikes.fabric.dev | /list | Listing of bikes | Bike | ListController | list |
| cars.fabric.dev | / | Homepage for cars | Car | IndexController | index |
| cars.fabric.dev | /list | Listing of bikes | Car | ListController | list |
+------------------+-------+-------------------------+-------------+-----------------+--------+

所以,

  • Application、Bike和Car是不同的模块和命名空间\Application, \Bike \Car
  • http 服务器上有 3 个虚拟主机(www..,cars..,bikes..)指向同一目录:/www/fabric.dev/public
  • 每个模块在 module.config.php 文件中都有自己的路由定义,如下面的非工作示例:

    // module/Application/config/module.config.php
    'router' => array(
    'routes' => array(
    'home' => array(
    'type' => 'Hostname',
    'options' => array(
    'route' => 'www.fabric.dev',
    'defaults' => array(
    '__NAMESPACE__' => 'Application\Controller'
    'controller' => 'Application\Controller\Index',
    'action' => 'index',
    ),
    )
    )
    )
    );

    // module/Bike/config/module.config.php
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Hostname',
'options' => array(
'route' => 'bikes.fabric.dev',
'defaults' => array(
'__NAMESPACE__' => 'Bike\Controller'
'controller' => 'Bike\Controller\Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Literal',
'options' => array(
'route' => '/list',
'defaults' => array(
'controller' => 'Bike\Controller\List',
'action' => 'list',
),
),
),
),
),
)
)

问题与疑问

网络上有足够多的文档介绍 zf2 的路由类,例如主机名、段、文字和正则表达式,但没有关于如何配对以及如何一起使用这些很棒的类。

除了将所有应用程序源代码复制到单独的 vhost 目录之外,是否有任何正确的方法可以使用路由器配置提供上述 uri 方案?

最佳答案

您必须了解路由的工作原理。路由基于 并包含一些选项。所有模块的所有配置(包括路由)都合并到一个配置数组中。

这意味着如果您在应用程序中定义了一条路线home,然后在 Bike 中定义了相同路线home,则 Bike 将覆盖来自应用程序的主页。

最好也有基于您的命名空间的路由名称。所以申请路线:

'router' => array(
'routes' => array(
'home' => array(
// config here
)
)
);

自行车路线

'router' => array(
'routes' => array(
'bike' => array(
// config here
)
)
);

注意第二个例子中homebike的区别!

关于zend-framework2 - 在 ZF2 路由器配置中的主机名下配置子路由的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com