Я только начинаю с 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(
),
),
),
),
),
),
),
Теперь я вижу, куда он направляет вас для настройки маршрутов. Я тоже экспериментировал с этим, но все еще не уверен, что мне следует их установить. Гораздо ближе, хотя.
Если вы хотите вызвать контроллер индекса в вашем модуле 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
Других решений пока нет …