2014-01-24 3 views
0

Я новый пользователь Zend Framework, и у меня есть проект. Проблема в том, что я не могу настроить маршруты на второй контроллер. Первый контроллер (Index) работает отлично, но не новый.Создание контроллера на ZF2

Я создал модуль с zftool, поэтому у меня есть модуль под названием «Медикаменты». Когда я пытаюсь получить доступ к моему проекту со следующим URL-адресом localhost/project_zend/public (или localhost/project_zend/public/medicaments), он работает, и я прихожу на свой IndexController, indexAction. Но когда я пытаюсь получить доступ к моему новому контроллеру «ConfigurationController (присутствует в/modules/Medicaments/Controller /), я прихожу на страницу 404, говоря, что« Контроллер не мог отправить запрос », и мое мнение указывает, что . контроллер используется "Медикаменты/Controller/Index", а не "Медикаменты/Controller/конфигурация"

Вот моя конфигурация маршрутизатора (в /modules/Medicaments/config/module.config.php) файл:

'router' => array(
    'routes' => array(
     'home' => array(
      'type' => 'Zend\Mvc\Router\Http\Literal', 
      'options' => array(
       'route' => '/', 
       'defaults' => array(
        'controller' => 'Medicaments\Controller\Index', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
     'medicaments' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/medicaments[/:action][/:id]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id'  => '[0-9]+', 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => 'Medicaments\Controller', 
        'controller' => 'Index', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'default' => array(
        'type' => 'Segment', 
        'options' => array(
         'route' => '/[:controller[/:action]]', 
         'constraints' => array(
          'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
         ), 
        ), 
       ), 
      ), 
     ), 
     'configuration' => array(
      'type' => 'segment', 
      'options' => array(
       'route'  => '/configuration[/:action][/:id]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id'  => '[0-9]+', 
       ), 
       'defaults' => array(
        'controller' => 'Configuration', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
    ), 
), 

Спасибо за вашу помощь

+0

Нет необходимости использовать «/ public» в вашем url – cptnk

ответ

1

Пожалуйста работу самостоятельно через official Documentation (здесь связаны между собой:. Маршрутизация и Contro Llers).

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

TL/DR: Вы должны создать invokables -entry в пределах controllers -конфигурации.

+2

Я читал снова и снова официальную документацию. Я не прошу вас просто избегать поисков. Я использовал invokables, и это не сработало. Так что спасибо за ваш ответ, но если это просто критика, я не думаю, что это действительно полезно. –

+0

Итак, я наконец-то получил ответ на мою проблему, потратив на это часы ... Это было просто из-за пробела перед открытием тега

Смежные вопросы