Ваш вопрос трудно найти решение. Кажется, ZF не используется так, как вы хотите.
Например, вы хотите следующие пакеты
- Навигация
- ACL
- Регистрация
Все они полностью отделены друг от друга и не все «подключаются» к ZF аналогичным образом.
- Навигация должна храниться и создаваться для каждого запроса, который нуждается в пакете, тогда объект навигации должен использоваться в
Zend_View
объектах или, возможно, нет. Что происходит, когда на навигацию ссылаются в виде, но она не существует?
- Пакет ACL настолько специфичен, он интегрируется в ZF множеством различных способов, ему нужен
Zend_Controller_Plugin
, ему нужен способ осмысленного хранения и построения объекта Zend_Acl
для запроса приложения к база приложения.
- Для регистрации требуется контроллер, действие и форма, которые передаются в
Zend_View
, а форма должна быть обработана. Затем его необходимо подключить к вашему объекту ACL, предположительно к базе данных и, возможно, к различным другим частям вашего сайта, для этого требуются более конкретные разрешения, выходящие за рамки использования для ACL
Это не невозможно делать то, что вы хотите, но должен быть лучший способ. Похоже, вы пытаетесь создать CMS с дополнительными подключаемыми пакетами?
Проблема ACL, которую я решил, имея библиотеку контроллеров, помощников, моделей, форм и т. Д. A Zend_Controller_Plugin
запускается и пытается войти в систему пользователя, этот плагин запускается для каждого приложения, которое я создаю, он работает хорошо использует формат объекта ACL, который я использовал некоторое время.
Для регистрации у меня есть RegisterController
в моей библиотеке, если мое приложение требует регистрации, оно имеет свой собственный RegisterController
, который расширяет RegisterController
в библиотеке. Если приложение не нуждается в регистрации, оно не имеет собственного RegisterController
.
Я надеюсь, что это помогает, я действительно думаю, что делать это предложенным абстрактным способом не стоит и никогда не будет настолько твердым и жестким, что вы действительно можете положиться на него, потому что каждое приложение является специфическим.