0

Я создал модуль, базовую копию примера альбомов, приведенный в документации ZF2, однако, с новым модулем, я не могу получить к нему доступ вообще - m всегда дается ошибка 404. Я строю это на скелете ZF2.Не удалось выполнить маршрутизацию с помощью модуля в ZF2

У меня загружено три модуля: приложение, внешний интерфейс и безопасность.

Как Frontend, так и Security являются дубликатами друг друга, однако я тщательно проверил и не ссылается на старый код (поскольку я буквально скопировал папку модуля и переименовал/переписал ссылки).

Модуль также загружается в application.config.php.

Любые идеи о том, что мне не хватает?

Модуль Config:

return array(
      'controllers' => array(
        'invokables' => array(
          'Security\Controller\Security' => 'Security\Controller\SecurityController', 
        ), 
      ), 

      'router' => array(
        'routes' => array(
          'security' => array(
            'type' => 'segment', 
            'options' => array(
              'route' => '/security[/:action][/:id]', 
              'constraints' => array(
                'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
                'id'  => '[0-9]+', 
              ), 
              'defaults' => array(
                'controller' => 'Security\Controller\Security', 
                'action'  => 'index', 
              ), 
            ), 
          ), 
        ), 
      ), 

      'view_manager' => array(
        'template_path_stack' => array(
          'security' => __DIR__ . '/../view', 
        ), 
      ), 
); 
+0

сделал вы настроите маршрутов в конфигурации модуля? –

+0

Я установил его в конфигурации модуля, я опубликую его. – bear

+0

Я предполагаю, что у вас включен модуль apache 'rewrite', и ваш виртуальный хост разрешает переопределять (или разрешает переписывание URL)? –

ответ

2

У меня была такая же проблема, следуя инструкциям по применению скелета (Getting started: A skeleton application). Когда бы я ни пошел в альбом в браузере (ZendSkeletonApplication/public/album), я бы получил страницу с ошибкой 404, но никаких подробностей о том, почему я получил 404. Мне было непонятно, как я смогу определить, почему я получал 404, когда я дважды проверял все и был уверен, что правильно скопировал и настроил модуль альбома. Оказалось, что мне не хватает косой черты на моем маршруте (module.config.php). Например, у меня было 'route' => 'album[/:action][/:id]' вместо 'route' => '/album[/:action][/:id]'.

я только был в состоянии понять это, намеренно вызывая ошибки от неправильного написания таких вещей, как делает 'Album\Controller\Albums' вместо 'Album\Controller\Album' стоимости invokables, это вызовет бы стек трассировки для отображения, который затем показал классы ZF2, что где называется на запрос. Я продолжал бы пропустить, проверить, а затем исправить каждую часть module.config.php, пока мне не дадут понять, какая часть конфигурации вызывает ошибку.

Я уверен, что это был не лучший способ отладки конфигурации приложения.

2

Существует несколько вещей, которые должны быть убедитесь, что: -

Вы должны добавить модуль в

  • application.config.php (о котором вы говорите, вы сделали это.)
  • Безопасность \ Контроллер \ Безопасность должна быть одинаковой по умолчанию (которая у вас уже есть)
  • Еще одна вещь Ваша структура папок .... -

Просто Doulbe проверить у вас есть/МОДУЛЬ/SRC/МОДУЛЬ /Controller/CONTROLLER_FILE_NAME.php

Я надеюсь, что помогает ..

0

Я знаю, что это старый пост. Однако еще одна вещь, чтобы убедиться, что в топ-каталоге модулей (тот же каталог, что и файл Module.php) находится файл «autoload_classmap.php» с «<?php return array();?>» внутри него.

0

Простой совет, чтобы узнать, имеет ли ваше правило уже добавлены правильно маршрутов или нет, вы можете проверить значение маршрутов в файле конфигурации внутри любого рабочего модуля, следующим образом:

$config   = $this->serviceLocator->get('config'); 
var_dump($config); 
Смежные вопросы