Релиз 0.0.1 нашего маленького Yii для LS

А вот и первый релиз :)

Теперь ОК:
  1. Пока не придумал что делать с контроллерами
    Контроллеры надо наследовать от класса LsyiiController, добавлять в controllerMap конфига webApp'а и роутить через PluginYii_ActionYiiController
  2. Пока непонятно как православо пользовать виджеты из-за того, что я не придумал что делать с контроллерами
    Есть контроллеры, а значит — есть и виджеты! :)

Как пользовать

Дописываем конфиг 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 комментариев

avatar
Livestreet с некоторой натяжкой можно назвать самостоятельным MVC-фреймворком. Расскажи, какую цель преследуют заимствования из Yii в контексте LS? Предыдущий топик читал.
avatar
Livestreet с некоторой натяжкой можно назвать самостоятельным MVC-фреймворком
вот эту натяжку я и хочу устранить )

Расскажи, какую цель преследуют заимствования из Yii в контексте LS?
Код на Yii получается намного компактнее и пишется намного быстрее
+ jquery со всеми вытекающими
+ обилие готовых расширений
+ обилие готовых приблуд для удобства плагинописания «из коробки»
+ забиваем на смарти, оставляя возможность скинизации (скорость простого инклюда php-представления без парсинга смарти-синтаксиса)

я думаю, этого уже достаточно )
avatar
Это достаточно весомые основания, чтобы включить эти наработки в репозиторий.
avatar
отдельного плагина на гуглокоде вполне хватит, я думаю
не поголовно всем же надо 10 мегов лишнего кода :)
avatar
А почему бы не реализовать это в ядре ЛС? Не будет ли решение в форме плагина менее производительным?
avatar
А почему бы не реализовать это в ядре ЛС?
проще лс переписать полностью на Yii )

Не будет ли решение в форме плагина менее производительным?
менее производительным чем что?
avatar
Менее производительным, чем реализация функциональности Yii в ядре ЛС.
avatar
проще лс переписать полностью на Yii
тогда уже и ожидать функциональности и производительности
avatar
Это очевидно, согласен. А что там с админкой, вышло чего?
avatar
у меня не вышло, последних новостей не знаю.
avatar
зыж. ежели я это делаю для собственных нужд (облегчение своей участи, ибо мне с лсом возни еще тонна), то не вижу ничего зазорного в том, чтобы поделиться с народом своими изысканиями. авось кто подхватит и поможет ;)
avatar
Делитесь делитесь, интересно. Спасибо.
avatar
очень интересно — ждем продолжения и развития
avatar
Есть уже что показать? Как продвигается эта тема?
avatar
кому вопрос то? )
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.