Релиз 0.0.1 нашего маленького Yii для LS
А вот и первый релиз :)
Теперь ОК:
Как пользовать
Дописываем конфиг app'а путем православного инхерита PluginYii_ModuleYii
plugins/barahlo/PluginBarahlo.class.php
… и заменой метода GetConfig
plugins/barahlo/classes/modules/yii/Yii.class.php
Создаем контроллер
plugins/barahlo/include/components/BarahloController.php
В конфиге плагина прикручиваем роутинг к перенаправляющему экшну
plugins/barahlo/config/config.php
Уря! Каркас готов :)
А где представления?
Представления для контроллера BarahloController у нас будут лежать в plugins/barahlo/templates/skin/skin_name/barahlo/
Например, экшн:
и представление для него
plugins/barahlo/templates/skin/default/barahlo/index.php
Покажи виджет!
Кто-то тут спрашивал про CTreeView
Итак экшн:
представление
plugins/barahlo/templates/skin/default/barahlo/tree.php
Теперь ОК:
Пока не придумал что делать с контроллерами
Контроллеры надо наследовать от класса LsyiiController, добавлять в controllerMap конфига webApp'а и роутить через PluginYii_ActionYiiControllerПока непонятно как православо пользовать виджеты из-за того, что я не придумал что делать с контроллерами
Есть контроллеры, а значит — есть и виджеты! :)
Как пользовать
Дописываем конфиг app'а путем православного инхерита PluginYii_ModuleYii
plugins/barahlo/PluginBarahlo.class.php
<?php
class PluginBarahlo
extends Plugin
{
protected $aInherits = array(
'module' => array(
'PluginYii_ModuleYii' => 'PluginBarahlo_ModuleYii',
),
);
...
… и заменой метода GetConfig
plugins/barahlo/classes/modules/yii/Yii.class.php
<?php
class PluginBarahlo_ModuleYii
extends PluginBarahlo_Inherit_PluginYii_ModuleYii
{
public function GetConfig($sType){
$aConfig = parent::GetConfig($sType);
// импорт контроллера
$aConfig['import'] = array_merge($aConfig['import'], array(
'application.plugins.barahlo.include.controllers.BarahloController',
));
// добавление контроллера в controllerMap
$aConfig['controllerMap']['barahlo'] = array(
'class' => 'BarahloController',
'plugin' => 'barahlo',
);
return $aConfig;
}
}
Создаем контроллер
plugins/barahlo/include/components/BarahloController.php
<?php
class BarahloController
extends LsyiiController
{
public function init(){
parent::init();
}
public function actionIndex(){
...
В конфиге плагина прикручиваем роутинг к перенаправляющему экшну
plugins/barahlo/config/config.php
Config::Set('router.page.barahlo', 'PluginYii_ActionYiiController');
Уря! Каркас готов :)
А где представления?
Представления для контроллера BarahloController у нас будут лежать в plugins/barahlo/templates/skin/skin_name/barahlo/
Например, экшн:
public function actionIndex(){
$user = User::me();
if(!$user){
// тем, кто не залогинен - отдадим 403
throw new CHttpException(403, 'Access denied');
}
// а тем, кто залогинен, покажем логин )
$this->render('index', compact('user'));
}
и представление для него
plugins/barahlo/templates/skin/default/barahlo/index.php
Ваш логин: <?php echo $user->user_login; ?>
Покажи виджет!
Кто-то тут спрашивал про CTreeView
Итак экшн:
public function actionWidget(){
$data = array(
array(
'text'=>'Grampa', //must using 'text' key to show the text
'children'=>array(//using 'children' key to indicate there are children
array(
'text'=>'Father',
'children'=>array(
array('text'=>'me'),
array('text'=>'big sis'),
array('text'=>'little brother'),
)
),
array(
'text'=>'Uncle',
'children'=>array(
array('text'=>'Ben'),
array('text'=>'Sally'),
)
),
array(
'text'=>'Aunt',
)
)
)
);
$this->render('tree', compact('data'));
}
представление
plugins/barahlo/templates/skin/default/barahlo/tree.php
<?php
$this->widget('CTreeView', array(
'data'=>$data,
'animated'=>'fast', //quick animation
'collapsed'=>'false',//remember must giving quote for boolean value in here
'htmlOptions'=>array(
'class'=>'treeview-red',//there are some classes that ready to use
),
));
?>
15 комментариев
Код на Yii получается намного компактнее и пишется намного быстрее
+ jquery со всеми вытекающими
+ обилие готовых расширений
+ обилие готовых приблуд для удобства плагинописания «из коробки»
+ забиваем на смарти, оставляя возможность скинизации (скорость простого инклюда php-представления без парсинга смарти-синтаксиса)
я думаю, этого уже достаточно )
не поголовно всем же надо 10 мегов лишнего кода :)
менее производительным чем что?