Создаём расширяемую структуру на Yii Framework
Хочу предложить Вашему вниманию концепт расширяемой структуры приложения на Yii Framework. Я уже писал как сделать свои Actions на Yii.
Сегодня же речь пойдёт о написании стандартных экшенов для контроллеров и их расширения.
Предположим, в приложении у нас все контроллеры наследуются от класса dotPlantFrontMainController.
Нам необходимо, чтобы у всех контроллеров было действие Breadcrumb.
Для этого, в базовом контроллере dotPlantFrontMainController переопределяем функцию actions() следующим образом:
public function actions() { return array( 'breadcrumb' => 'application.extensions.actionBreadcrumb', ); } |
Если в унаследованном контроллере(скажем News) мы используем экшены из других файлов, то нам необходимо также переопределить функцию примерно вот так:
public function actions() { // return external action classes, e.g.: return array_merge( parent::actions(), array( 'admin'=>'application.controllers.News.ActionAdmin', ) ); } |
Таким образом, в News будут экшены определенные в базовом классе dotPlantFrontMainController плюс ActionAdmin.
Переписать же actionBreadcrumb можно уже в теле самого News.
В итоге имеем легко расширяемую структуру. В самом же базовом классе массив actions можно автоматически генерировать в соответствии с установленными расширениями. Всё легко и просто 🙂
Понравилась статья?
Нет обратных ссылок на эту запись.
Сентябрь 18th, 2009 - 18:14
когда уже выйдет стабильный релиз dotplant?
кстати, код на темно-сером фоне не всегда удочно читать:)
Сентябрь 19th, 2009 - 14:34
@Satellite: до стабильного ещё не скоро. Первую альфу можно ждать в начале ноября 🙂
Октябрь 1st, 2009 - 14:34
удачи в разработке:) хотелось бы, чтобы существовала возможность инсталляции доп модулей + какойнибудь простенький faq по созданию своего модуля