petrgrishin/yii-widget-factory
Composer 安装命令:
composer require petrgrishin/yii-widget-factory
包简介
Yii widget factory
README 文档
README
Фабрика виджетов Yiiframework
Установка
Добавите зависимость для вашего проекта в composer.json:
{
"require": {
"petrgrishin/yii-widget-factory": "dev-master"
}
}
Постановка проблемы
Необходимо использовать виджеты реализованные в модуле, которые имеют зависимости от модуля, например знание о контроллере модуля.
Решение
Реализовать в модуле создание фабрики виджетов и проинициализировать его знаниями расположеными в нем. Для использования виджета в приложении, использовать созданную фабрику.
Пример решения
####Модуль
Класс модуля. Инициализируем фабрику виджета комментариев знанием (параметр виджета listUrl) о контроллере comments/list, расположеном в текущем модуле.
use \PetrGrishin\WidgetFactory\WidgetFactory; class CommentsModule extends CWebModule { public function getCommentsWidgetFactory() { if (empty($this->_commentsWidgetFactory)) { $this->_commentsWidgetFactory = new WidgetFactory(); $this->_commentsWidgetFactory ->setClassName(Widgets\CommentsWidget::className()) ->setParams(array( 'listUrl' => $this->createModuleUrlBuilder('comments/list'), )); } return $this->_commentsWidgetFactory; } }
####Основное приложение Класс контроллера
class SiteController extends CController { public function actionDetail() { $this->render('detail', array( 'commentsWidgetFactory' => $this->getCommentsWidgetFactory(), )); } /** * @return \PetrGrishin\WidgetFactory\WidgetFactory */ protected function getCommentsWidgetFactory() { return $this->getCommentsModule()->getCommentsWidgetFactory() ->setView($this); } /** * @return CommentsModule */ protected function getCommentsModule() { return Yii::app()->getModule('comments'); } }
Представление контроллера и создание виджета в нем
$commentsWidget = $commentsWidgetFactory->createInstance(array('param' => 'value')); $commentsWidget->run();
统计信息
- 总下载量: 12
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2014-05-20