, (*1)
Π€Π°Π±ΡΠΈΠΊΠ° Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Yiiframework, (*2)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠΎΠ±Π°Π²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² composer.json:, (*3)
{
"require": {
"petrgrishin/yii-widget-factory": "dev-master"
}
}
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ., (*4)
Π Π΅ΡΠ΅Π½ΠΈΠ΅
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±ΡΠΈΠΊΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΈ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π·Π½Π°Π½ΠΈΡΠΌΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΡΠΌΠΈ Π² Π½Π΅ΠΌ. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΠ°Π±ΡΠΈΠΊΡ., (*5)
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠΎΠ΄ΡΠ»Ρ
ΠΠ»Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠ°Π±ΡΠΈΠΊΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π·Π½Π°Π½ΠΈΠ΅ΠΌ (ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° listUrl
) ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ comments/list
, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎΠΌ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅., (*6)
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;
}
}
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, (*7)
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');
}
}
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Π² Π½Π΅ΠΌ, (*8)
$commentsWidget = $commentsWidgetFactory->createInstance(array('param' => 'value'));
$commentsWidget->run();