Возникли проблемы с маршрутизацией URI для модулей в Zend Framework

Я только начинаю с Zend Framework, и я не совсем уверен, что я делаю неправильно с маршрутизацией URI.

Я начинаю с начального проекта Zend Framework в Zend Studio, основанного в моей папке htdocs (я использую Zend Server также и в Windows 7). Кажется, все, что там было, работает нормально, поднимая страницу индекса (она заканчивается из подкаталога / public /).

Но когда я пытаюсь добавить модуль, в данном случае называемый Пользователи с контроллером с именем Index, и следуя инструкциям по его настройке, я не уверен, что мне следует добавить в URI, чтобы заставить его маршрутизировать к нему Посмотреть. Я попробовал почти все конфигурации комбинаций URI, которые я могу придумать (localhost:80/public/users, localhost:80/public/users/index, localhost:80/users, так далее)

Я не получаю ошибку маршрутизации, а просто простую страницу 404.

Нужно ли устанавливать общую папку как корневую? Или мне нужно что-то еще сделать, чтобы маршрутизация работала?

~ редактировать в ответ на bitWorking

Похоже, он автоматически добавляет его в application.config.php. Но вот module.config.php модуля Users

'router' => array(
'routes' => array(
'users' => array(
'type'    => 'Literal',
'options' => array(
// Change this to something specific to your module
'route'    => '/index',
'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.
'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(
),
),
),
),
),
),
),

Теперь я вижу, куда он направляет вас для настройки маршрутов. Я тоже экспериментировал с этим, но все еще не уверен, что мне следует их установить. Гораздо ближе, хотя.

0

Решение

Если вы хотите вызвать контроллер индекса в вашем модуле Users с помощью /users Вы должны соответственно назвать маршрут:

...
'users' => array(
'type'    => 'Literal',
'options' => array(
// Change this to something specific to your module
'route'    => '/users',
---------
...

Иначе, пожалуйста, контролируйте application.config.php, Это должно выглядеть так:

return array(
'modules' => array(
'Application',
'Users',
),
...

Таким образом, URL должен выглядеть так:

localhost/public/users -> Users/Controller/IndexController/indexAction
localhost/public/users/foo -> Users/Controller/FooController/indexAction
localhost/public/users/foo/bar -> Users/Controller/FooController/barAction
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]