Zend Framework 3 маршрутизаторы в отдельном файле (не в дереве массива конфигурации) - PullRequest
0 голосов
/ 17 апреля 2019

Я использую этот урок 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 вне дерева конфигурации?как я уже упоминал ранее?Где в модуле должен быть такой роутер-файл, расположенный по адресу?

1 Ответ

1 голос
/ 18 апреля 2019

Рядом с module.config.php в папке модулей config/ обычно создается routes.config.php.

Я разделил его, сделав что-то вроде user.routes.config.php с roles.routes.config.php.Возможно, вы хотели бы front.routes.config.php с admin.routes.config.php.

В конце концов, решать вам.Для коллег и будущего здравомыслия, убедитесь, что вы делаете это последовательно, хотя.


Например, конфиг в моем проекте для модуля User:

config files

Это модуль, которыйобрабатывает все, что непосредственно связано с пользователем, так что все это есть.Вероятно, следует разделить это больше, но сейчас это было бы ненужным.

Затем вы загрузите всю эту конфигурацию, как в вашем 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',
                ],
            ],
        ];
    }
}

Помните, что в конечном итоге реализация ваших проектов зависит от вас.Однако разработайте стандарт и придерживайтесь его.Ты сойдешь с ума, если везде будешь иметь разные стандарты.

...