У меня есть проект, который я начал без использования структуры модуля в ZF 1, теперь мне нужно разместить структуру модуля для управления пользователями (имеет больше смысла для меня).ZF Zend_Controller_Router_Route_Module С и с модулем по умолчанию по умолчанию
Моя проблема маршрут «по умолчанию» должен попытаться пойти с: контроллер /: Действие /: идентификатор и модуль маршрута
должен идти с: модуль /: контроллер /: Действие /: идентификатор по умолчанию от ZF 1, использовать вышеуказанное без: id
, но для моей «логики» требуется поле: id, как я могу это сделать?
Что я стараясь пришел:
protected function _initModuleAutoload()
{
$modelLoader = new Zend_Application_Module_Autoloader(
array('namespace' => 'DM',
'basePath' => APPLICATION_PATH . '/modules/default')
, array('namespace' => 'UM',
'basePath' => APPLICATION_PATH . '/modules/users')
);
$modelLoader->addResourceType('service', 'services', 'Service');
$modelLoader->addResourceType('serviceplugin', 'services/plugins', 'Service_Plugin');
return $modelLoader;
}
public function _initFrontController()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$route1 = new Zend_Controller_Router_Route(
':module/:controller/:action/:id/',
array(
'id' => '\d+'
, 'module' => 'default'
, 'controller' => 'index'
, 'action' => 'index'
)
);
$router->addRoute('default', $route1);
$front->addModuleDirectory(APPLICATION_PATH . "/modules/");
$front
->registerPlugin(new Far_Access_Plugin_Identity(), 1)
->registerPlugin(new Far_Access_Plugin_Access(), 2)
->throwExceptions(true)
;
return $front;
}
также пытался создать второй маршрут для пользователей, а не по умолчанию, но не работает.
Любые идеи? Что я делаю не так?
Помощь от irc в freenode была предоставлена в канале #zftalk, когда я предоставил эту ссылку.
Bittarman: crash82: добавить требования к идентификатору, поэтому оно должно быть [\ d] +
Bittarman: или, просто добавить экземпляр Zend_Controller_Router_Route_Module прикован к Zend_Controller_Router_Route только с идентификатором в нем , с установкой по умолчанию для id, как false.
Bittarman: также, _initModuleAutoload, бессмысленно Bittarman: иметь свой модуль «по умолчанию» в директории модулей, является своего рода неправильно
Bittarman: и вы остановите FrontController ресурс из работает, имея _initFrontController
Bittarman: так resources.frontController больше не будет работать.crash82: гул ... Так много проблем :(, так что я могу просто поместить модуль «по умолчанию» в каталог приложений и любые другие модули могут продолжать загружаться из модулей/пути
?Bittarman: да :)
crash82: собирается попробовать, что Bittarman: и каждый модуль, который имеет загрузчик, поставляет свой собственный загрузчик модуль ресурсов
Bittarman: так, если вы идете создать больше похоже, что вы в конечном с двумя для каждого модуля.
Bittarman: вы были бы удивлены, сколько людей это делает.
Bittarman: s/THT/что/
маршрутизации по умолчанию в текущей версии ZF всегда проверяет модуль при маршрутизации. Добавление модуля не будет влиять на маршрутизацию, если вы используете маршруты по умолчанию. Просто добавьте модуль в качестве первого параметра, и он должен работать. если вы хотите, проверьте код в 'Zend_Controller_Router_Route_Module' – RockyFord
Да, это часть ответа. :-) Спасибо –