2016-03-29 3 views
1

Я создаю новое небольшое приложение с Zend Framework 2, и у меня есть некоторые проблемы с маршрутами ... Я создал новый модуль, клонирующий модуль Skeleton с Git и переименовав его " Пользователи». Я добавил контроллеры для регистрации нового пользователя, для входа в систему и для выполнения CRUD-операций.Php Zend 2 Маршрут не найден

Это моя структура папок модуля:

Folder Structure

и это мой module.config.php файл:

<?php 
return array(
    'controllers' => array(
    'invokables' => array(
     'Users\Controller\Index' => 'Users\Controller\IndexController', 
     'Users\Controller\Register' => 'Users\Controller\RegisterController', 
     'Users\Controller\Login' => 'Users\Controller\LoginController', 
     'Users\Controller\UserManager' => 'Users\Controller\UserManagerController', 
    ), 
    ), 
    'router' => array(
    'routes' => array(
     'users' => array(
      'type' => 'Literal', 
      'options' => array(
       // Change this to something specific to your module 
       'route' => '/users', 
       'defaults' => array(
        // Change this value to reflect the namespace in which 
        // the controllers for your module are found 
        '__NAMESPACE__' => 'Users\Controller', 
        'controller' => 'Index', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       // This route is a sane default when developing a module; 
       // as you solidify the routes for your module, however, 
       // you may want to remove it and replace it with more 
       // specific routes. 
       'login' => array(
        'type' => 'Segment', 
       'may_terminate' => true, 
        'options' => array(
         'route' => '/login[/:action]', 
         'constraints' => array(
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
          'controller' => 'Users\Controller\Login', 
          'action'  => 'index', 
         ),        
        ), 
       ), 
       'register' => array(
        'type' => 'Segment', 
        'may_terminate' => true, 
        'options' => array(
         'route' => '/register[/:action]', 
         'constraints' => array(
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
          'controller' => 'Users\Controller\Register', 
          'action'  => 'index', 
         ), 
        ), 
       ), 
       'user-manager' => array(
        'type' => 'Segment', 
        'may_terminate' => true, 
        'options' => array(
         'route' => '/user-manager[/:action[/:id]]', 
         'constraints' => array(
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'id'  => '[a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
          'controller' => 'Users\Controller\UserManager', 
          'action'  => 'index', 
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
    ), 
    'view_manager' => array(
    'template_path_stack' => array(
     'users' => __DIR__ . '/../view', 
    ), 
    ), 
); 

Когда я пытаюсь с моим браузером URL-адрес test.local/users/login или test.local/users/register все работает нормально, но если я попробую test.local/users/user-manager Я получаю следующее сообщение об ошибке:

Route with name "user-manager" not found

в то время как с test.local/пользователей/пользователь-менеджер/редактировать/5 он визуализируется нужную страницу. Я немного смущен, и я не знаю, как решить эту проблему.

Любая помощь очень ценится. Заранее спасибо.

+1

Конфигурация выглядит хорошо; вы уверены, что это ошибка 404? Вы можете получить «маршрут не найден», если вы используете помощник просмотра URL с недопустимым именем маршрута, например '$ this-> url ('user-manager')', а не '$ this-> url ('users/user- manager ') ' – AlexP

+0

@AlexP это не ошибка 404, кажется, что с URL _/users/user-manager_ приложение не может найти маршрут с именем« user-manager », а с помощью _/users/user-manager/edit/1_ он отлично работает. Благодарю. – Stefano

+0

@AlexP спасибо !!! Вы были правы – Stefano

ответ

0

Я думаю, что проблема связана с ограничениями и значениями по умолчанию. Попробуйте удалить ограничения в маршруте user-manager и посмотреть, что произойдет.

+0

Спасибо за ваш ответ, я попытался удалить ограничения, но проблема все та же. – Stefano

1

проблема решена! @AlexP был прав, проблема была в файле index.phtl с $this->url('user-manager');, я изменился в $this->url('users/user-manager'), и теперь это работает.

Еще раз спасибо!

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