Создаём расширяемую структуру на 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 можно автоматически генерировать в соответствии с установленными расширениями. Всё легко и просто 🙂