0

我正在使用本教程https://docs.zendframework.com/tutorials/getting-started/overview/来创建相册模块。这个对我有用。

项目内部有 /module/Album/config/module.config.php 文件,其中包含路由。路由器位于阵列树内。正如我之前的经验所表明的那样,我将来每个项目(甚至每个模块)都可以拥有数十条路线。

在此文档页面https://docs.zendframework.com/zend-router/routing/上,我找到了另一种将路由器添加到模块的方法。

// One at a time:
$route = Literal::factory([
    'route' => '/foo',
    'defaults' => [
        'controller' => 'foo-index',
        'action'     => 'index',
    ],
]);
$router->addRoute('foo', $route);

这种方式比将路由存储在非常深的配置数组树中更适合我。

所以,我的问题是:我可以在哪里将 php 路由器代码放在配置树之外,就像我之前提到的那样?这样的路由器文件应该在模块中的什么位置?

4

1 回答 1

2

module.config.php在 modules文件夹旁边,config/通常会创建一个routes.config.php.

我通过执行类似user.routes.config.phpwith的操作来进一步拆分它roles.routes.config.php。可能你想front.routes.config.phpadmin.routes.config.php.

最后,这取决于你。为了同事和未来的理智,请确保您始终如一地这样做。


例如,我的一个项目中用户模块的配置:

配置文件

它是一个处理与用户直接相关的任何内容的模块,所以它都在里面。可能应该更多地拆分它,但就目前而言,这是不必要的。

然后,您将像这样在您的中加载所有这些配置Module.php

use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;

class Module implements ConfigProviderInterface, AutoloaderProviderInterface
{

    /**
     * @return array
     */
    public function getConfig()
    {
        $config = [];

        $path = __DIR__
            . DIRECTORY_SEPARATOR . '..'
            . DIRECTORY_SEPARATOR . 'config'
            . DIRECTORY_SEPARATOR . '*.php';

        foreach (glob($path) as $filename) {
            $config = array_merge_recursive($config, include $filename);
        }

        return $config;
    }

    /**
     * @return array
     */
    public function getAutoloaderConfig()
    {
        return [
            'Zend\Loader\StandardAutoloader' => [
                'namespaces' => [
                    __NAMESPACE__ => __DIR__ . DIRECTORY_SEPARATOR . 'src',
                ],
            ],
        ];
    }
}

请记住,项目的最终实施取决于您。但是,制定一个标准并坚持下去。如果你到处都有不同的标准,你会发疯的。

于 2019-04-18T07:48:25.587 回答