ygin - CMF/CMS система на yii
ygin - CMF/CMS система на yii
Привет!
У себя в компании мы писали свою систему для разработки сайтов и разных веб-сервисов, и когда появился yii, не смогли устоять и начали всё переписывать на yii.
Когда переписали, то возникла мысль что она может пригодиться кому-то ещё и решили выложить её в открытый доступ.
https://github.com/ygin-system/ygin
Сейчас пытаемся организовать документацию и обложить всё юнит-тестами.
Интересно выслушать мнение всех - замечания, пожелания, предложения и любую критику.
Быстроссылки:
демка (в контенте логин/пароль в админку): http://demo.ygin.ru
что есть по документации: http://www.ygin.ru/documentation/
инсталлятор: https://github.com/ygin-system/ygin-install
и ещё раз сами исходники: https://github.com/ygin-system/ygin
У себя в компании мы писали свою систему для разработки сайтов и разных веб-сервисов, и когда появился yii, не смогли устоять и начали всё переписывать на yii.
Когда переписали, то возникла мысль что она может пригодиться кому-то ещё и решили выложить её в открытый доступ.
https://github.com/ygin-system/ygin
Сейчас пытаемся организовать документацию и обложить всё юнит-тестами.
Интересно выслушать мнение всех - замечания, пожелания, предложения и любую критику.
Быстроссылки:
демка (в контенте логин/пароль в админку): http://demo.ygin.ru
что есть по документации: http://www.ygin.ru/documentation/
инсталлятор: https://github.com/ygin-system/ygin-install
и ещё раз сами исходники: https://github.com/ygin-system/ygin
Ищем yii-разработчиков на фриланс
-
- Сообщения: 60
- Зарегистрирован: 2012.08.15, 15:41
Re: ygin - CMF/CMS система на yii
При беглом просмотре админка ничотак, на выходных нужно будет глянуть ближе.
Re: ygin - CMF/CMS система на yii
Выглядит внушительно, молодцы ребята, спасибо что выложили и поделились.
Re: ygin - CMF/CMS система на yii
Отличный проект! Спасибо за исходники!
Подскажите удалось ли протестировать код юнит-тестами и какие сложности возникли ?
Подскажите удалось ли протестировать код юнит-тестами и какие сложности возникли ?
Re: ygin - CMF/CMS система на yii
Спасибо за отзывы!
Поделюсь некоторыми любопытными моментами в реализации, интересно ваше мнение и критика.
В целом мы стараемся всё разбивать на yii-модули, чтоб функционал был более-менее обособлен и всё было в одном месте.
С другой стороны, стоит задача дать возможность разработчику переопределить любые компоненты модуля (контроллеры/вьюхи/модели).
И здесь нам немного не хватило возможностей yii - контроллеры и вьюхи переопределять можно, а вот с моделями есть сложность.
Например, если в модуле везде используется модель News, а на прикладном сайте понадобилось использовать свою модель MyNews, то придется по-большому счету переписывать весь модуль, заменяя везде News на MyNews.
Вместо этого мы используем свой механизм переопределения моделей. Достаточно в конфиге написать 'models' => array('News' => 'MyNews'). И теперь при вызове News::model() уже вернется модель MyNews.
Также, для полной обособленности модулей, мы в них храним роуты, а не напрямую в конфиге в urlManager.
В целом же пытаемся минимум выносить своих наработок на фронтэнд, и дать максимум возможностей для настройки бэкэнда. Конечно, если код повторяется много раз, то это автоматизируем.
С юнит-тестами особых проблем нет, кода достаточно много и процесс небыстрый. Но необходимость уже назрела, т.к. бывает что вносим улучшения в одно, а позже выясняется что другой функционал отвалился)xoma писал(а):Подскажите удалось ли протестировать код юнит-тестами и какие сложности возникли ?
Поделюсь некоторыми любопытными моментами в реализации, интересно ваше мнение и критика.
В целом мы стараемся всё разбивать на yii-модули, чтоб функционал был более-менее обособлен и всё было в одном месте.
С другой стороны, стоит задача дать возможность разработчику переопределить любые компоненты модуля (контроллеры/вьюхи/модели).
И здесь нам немного не хватило возможностей yii - контроллеры и вьюхи переопределять можно, а вот с моделями есть сложность.
Например, если в модуле везде используется модель News, а на прикладном сайте понадобилось использовать свою модель MyNews, то придется по-большому счету переписывать весь модуль, заменяя везде News на MyNews.
Вместо этого мы используем свой механизм переопределения моделей. Достаточно в конфиге написать 'models' => array('News' => 'MyNews'). И теперь при вызове News::model() уже вернется модель MyNews.
Также, для полной обособленности модулей, мы в них храним роуты, а не напрямую в конфиге в urlManager.
В целом же пытаемся минимум выносить своих наработок на фронтэнд, и дать максимум возможностей для настройки бэкэнда. Конечно, если код повторяется много раз, то это автоматизируем.
Ищем yii-разработчиков на фриланс
Re: ygin - CMF/CMS система на yii
Это очень напоминает DI +IoC контейнер, не смотрели в сторону уже готовых решений ?Вместо этого мы используем свой механизм переопределения моделей. Достаточно в конфиге написать 'models' => array('News' => 'MyNews'). И теперь при вызове News::model() уже вернется модель MyNews
Re: ygin - CMF/CMS система на yii
Да, это очень похоже и если будет необходимость применения такой слабой связности в других местах, то можно будет применить готовые решения.xoma писал(а):Это очень напоминает DI +IoC контейнер, не смотрели в сторону уже готовых решений ?Вместо этого мы используем свой механизм переопределения моделей. Достаточно в конфиге написать 'models' => array('News' => 'MyNews'). И теперь при вызове News::model() уже вернется модель MyNews
Для моделей же реализация получилась достаточно простая, поэтому сейчас всё самописно. Вот тут можно поглядеть реализацию: https://github.com/ygin-system/ygin/blo ... Record.php
Ищем yii-разработчиков на фриланс
- nizsheanez
- Сообщения: 814
- Зарегистрирован: 2011.04.29, 13:09
- Откуда: Москва
Re: ygin - CMF/CMS система на yii
Реализация понятна и вроде удобна, но не надежна.
Модель созданная через new сломает подход.
Ну и не понравилось свойство $_isStart, пока не прочитаешь весь год не поймешь зачем он. Дайте ребенку хорошее имя.
Личные мысли:
Лично я за реализацию через код, а не через массивы. В том смысле, что в вашем да и любом DI мы теряем автокомплит, что не может не бесить. Лично я за фабричные методы, а вот где они будут написаны это вопрос открытый.
Модель созданная через new сломает подход.
Ну и не понравилось свойство $_isStart, пока не прочитаешь весь год не поймешь зачем он. Дайте ребенку хорошее имя.
Личные мысли:
Лично я за реализацию через код, а не через массивы. В том смысле, что в вашем да и любом DI мы теряем автокомплит, что не может не бесить. Лично я за фабричные методы, а вот где они будут написаны это вопрос открытый.
Re: ygin - CMF/CMS система на yii
Да, с $_isStart схалтурили)nizsheanez писал(а):Реализация понятна и вроде удобна, но не надежна.
Модель созданная через new сломает подход.
Ну и не понравилось свойство $_isStart, пока не прочитаешь весь год не поймешь зачем он. Дайте ребенку хорошее имя.
Личные мысли:
Лично я за реализацию через код, а не через массивы. В том смысле, что в вашем да и любом DI мы теряем автокомплит, что не может не бесить. Лично я за фабричные методы, а вот где они будут написаны это вопрос открытый.
Но по сути с вами не соглашусь. Дело в том, что такое применение необходимо лишь внутри системы, когда стоит задача написать модуль, который можно будет переопределять.
При разработке сайта, когда необходимо переопределить модель, с ней уже работаем как обычно - через new или через Model::model().
Т.е. и автокомплит будет работать, и с new ничего не сломается.
Ищем yii-разработчиков на фриланс
- nizsheanez
- Сообщения: 814
- Зарегистрирован: 2011.04.29, 13:09
- Откуда: Москва
Re: ygin - CMF/CMS система на yii
как это через new не сломается?
Re: ygin - CMF/CMS система на yii
Тут стоит понимать специфику системы. В системе есть готовые модули, они представляют базовый функционал и в них new действительно НЕ используем.
Но с этими модулями напрямую работа и не идет, изменять их нельзя. Если есть необходимость расширить функционал базовых модулей, то переопределяем модели, контроллеры, вью и др. компоненты. И в них работаем уже напрямую с новыми моделями через new. Т.е. у разработчиков сайта на системе ygin не будет никаких проблем с автокомплитом и не надо вообще знать о каких-то магических методах.
Как-то так, надеюсь объяснил.
Но с этими модулями напрямую работа и не идет, изменять их нельзя. Если есть необходимость расширить функционал базовых модулей, то переопределяем модели, контроллеры, вью и др. компоненты. И в них работаем уже напрямую с новыми моделями через new. Т.е. у разработчиков сайта на системе ygin не будет никаких проблем с автокомплитом и не надо вообще знать о каких-то магических методах.
Как-то так, надеюсь объяснил.
Ищем yii-разработчиков на фриланс
- nizsheanez
- Сообщения: 814
- Зарегистрирован: 2011.04.29, 13:09
- Откуда: Москва
Re: ygin - CMF/CMS система на yii
1) Т.е. вы при переопределении модуля предлагаете переопределять все модели?
2) "new действительно НЕ используем" - уверены?)) Приведу пример: вам нужно запилить AciveDataProvider. Пишем:
и этот код внутри проходит через метод
https://github.com/yiisoft/yii/blob/mas ... r.php#L163
Оп! И мы прошли мимо вашего фабричного метода!
Понятно, что чинится через new CActiveDataProvider(BaseModelClass::model())
Но вы же понимаете, что таких неявных мест - полный фреймворк. Все такие нюансы будете в голове держать?
Просто хочется понять, что вы действительно до конца продумали чем может обернуться для вас отказ от new и подмена моделей.
3) Другой примерчик:
Вроде бы мы имели в виду создание провайдера по отфильтрованных поусловиям scpe1() и scope2() записям.
А потом хотели получить все записи и положить в переменную $result.
Однако получится наоборот: в $result будут лежать отфильтрованные данные, а в $data НЕ отфильтрованные.
Конечно это не проблема вашего подхода, но вы подталкиваете писать именно так.
Но вроде ваш подход должен сработать ))
2) "new действительно НЕ используем" - уверены?)) Приведу пример: вам нужно запилить AciveDataProvider. Пишем:
Код: Выделить всё
new CActiveDataProvider('BaseModelClass');
https://github.com/yiisoft/yii/blob/mas ... r.php#L163
Оп! И мы прошли мимо вашего фабричного метода!
Понятно, что чинится через new CActiveDataProvider(BaseModelClass::model())
Но вы же понимаете, что таких неявных мест - полный фреймворк. Все такие нюансы будете в голове держать?
Просто хочется понять, что вы действительно до конца продумали чем может обернуться для вас отказ от new и подмена моделей.
3) Другой примерчик:
Код: Выделить всё
$db = new CActiveDataProvider(BaseModelClass::model()->scope1()->scope2());
$result = BaseModelClass:model()->findAll();
$data = $dp->getData();
А потом хотели получить все записи и положить в переменную $result.
Однако получится наоборот: в $result будут лежать отфильтрованные данные, а в $data НЕ отфильтрованные.
Конечно это не проблема вашего подхода, но вы подталкиваете писать именно так.
Но вроде ваш подход должен сработать ))
Re: ygin - CMF/CMS система на yii
Как раз нет, только если нужно что-то переопределить.nizsheanez писал(а):1) Т.е. вы при переопределении модуля предлагаете переопределять все модели?
Кажется, мы друг друг до конца не понимаем)nizsheanez писал(а): 2) "new действительно НЕ используем" - уверены?)) Приведу пример: вам нужно запилить AciveDataProvider. Пишем:и этот код внутри проходит через методКод: Выделить всё
new CActiveDataProvider('BaseModelClass');
https://github.com/yiisoft/yii/blob/mas ... r.php#L163
Оп! И мы прошли мимо вашего фабричного метода!
Понятно, что чинится через new CActiveDataProvider(BaseModelClass::model())
Но вы же понимаете, что таких неявных мест - полный фреймворк. Все такие нюансы будете в голове держать?
Просто хочется понять, что вы действительно до конца продумали чем может обернуться для вас отказ от new и подмена моделей.
3) Другой примерчик:Вроде бы мы имели в виду создание провайдера по отфильтрованных поусловиям scpe1() и scope2() записям.Код: Выделить всё
$db = new CActiveDataProvider(BaseModelClass::model()->scope1()->scope2()); $result = BaseModelClass:model()->findAll(); $data = $dp->getData();
А потом хотели получить все записи и положить в переменную $result.
Однако получится наоборот: в $result будут лежать отфильтрованные данные, а в $data НЕ отфильтрованные.
Конечно это не проблема вашего подхода, но вы подталкиваете писать именно так.
Но вроде ваш подход должен сработать ))
В переопределенных компонентах должны использоваться уже напрямую новые модели. Если устраивают базовые, то базовые.
Исходные же модули мы осознанно пишем с поддержкой переопределения моделей и конструкции типа "new CActiveDataProvider('BaseModelClass');" не используем.
Проблема может быть в одном случае - если есть переопределенная модель, но разработчик делает вызов базовой модели.
Но это странный случай, ведь если разработчик переопределил модель, то он знает о ней и будет использовать её.
Ищем yii-разработчиков на фриланс
- nizsheanez
- Сообщения: 814
- Зарегистрирован: 2011.04.29, 13:09
- Откуда: Москва
Re: ygin - CMF/CMS система на yii
ну я и говорю, что должно работать ))
Re: ygin - CMF/CMS система на yii
Ещё в системе сделан доступ к консольным приложениям через браузер.
Хотя всё это и противоречит концепции консольных приложений, но на практике бывает невозможно получить доступ к консольке на обычных виртуальных хостингах.
А доступ нужен, чтобы например прогнать миграции и обновить систему. Это выполняется таким образом: domain.ru/yiic/migrate/
Вторым параметром передается имя команды и далее могут быть параметры.
Доступ через браузер доступен только в дебаг-режиме.
Ещё в системе есть специальный раздел для переопределения представлений.
Честно признаться, сложно запомнить как для виджетов и представлений должны располагаться файлы в теме.
Тут же видим все доступные представления/ресурсы и определяем какие должны быть скопированы в тему и т.о. переопределяем поведение по умолчанию.
Как обычно, буду рад за ваши замечания и критику =)
Хотя всё это и противоречит концепции консольных приложений, но на практике бывает невозможно получить доступ к консольке на обычных виртуальных хостингах.
А доступ нужен, чтобы например прогнать миграции и обновить систему. Это выполняется таким образом: domain.ru/yiic/migrate/
Вторым параметром передается имя команды и далее могут быть параметры.
Доступ через браузер доступен только в дебаг-режиме.
Ещё в системе есть специальный раздел для переопределения представлений.
Честно признаться, сложно запомнить как для виджетов и представлений должны располагаться файлы в теме.
Тут же видим все доступные представления/ресурсы и определяем какие должны быть скопированы в тему и т.о. переопределяем поведение по умолчанию.
Как обычно, буду рад за ваши замечания и критику =)
Ищем yii-разработчиков на фриланс
-
- Сообщения: 4
- Зарегистрирован: 2012.08.11, 00:04
Re: ygin - CMF/CMS система на yii
1 предложение - при установке можно сделать проверку на rw директорий чтобы не выпадали exception
2 Ошибка миграций:
PHP Error [1]
Fatal error: Nesting level too deep - recursive dependency? (/var/www/yandex.ru/htdocs/ygin/yii/logging/CLogFilter.php:100)
поставить не удалось
решение простое
проблема в миграциях и в длине ключей в таблицах da_files и da_object_parameters
ключи скорректировал миграции не трогал просто дампы залил всё встало
2 Ошибка миграций:
PHP Error [1]
Fatal error: Nesting level too deep - recursive dependency? (/var/www/yandex.ru/htdocs/ygin/yii/logging/CLogFilter.php:100)
поставить не удалось
решение простое
проблема в миграциях и в длине ключей в таблицах da_files и da_object_parameters
ключи скорректировал миграции не трогал просто дампы залил всё встало
Re: ygin - CMF/CMS система на yii
Уоу-уоу-уоу! Выглядит очень хорошо
Поставлю на ближайший проектик, попробую поработать. Давно ждал нечто подобное. Как сдам клиенту сайт на ней, отпишусь обязательно.
Поставлю на ближайший проектик, попробую поработать. Давно ждал нечто подобное. Как сдам клиенту сайт на ней, отпишусь обязательно.
Re: ygin - CMF/CMS система на yii
Добрый день. В PHP я новичок. Но очень хочется познакомиться с YGIN.SamePeople писал(а):1 предложение - при установке можно сделать проверку на rw директорий чтобы не выпадали exception
2 Ошибка миграций:
PHP Error [1]
Fatal error: Nesting level too deep - recursive dependency? (/var/www/yandex.ru/htdocs/ygin/yii/logging/CLogFilter.php:100)
поставить не удалось
решение простое
проблема в миграциях и в длине ключей в таблицах da_files и da_object_parameters
ключи скорректировал миграции не трогал просто дампы залил всё встало
При установке выходит такая же ошибка.
Подскажите как решить эту проблему. Спасибо.
Re: ygin - CMF/CMS система на yii
Привет. Попробуй дать права на запись для каталоговslavik писал(а): Добрый день. В PHP я новичок. Но очень хочется познакомиться с YGIN.
При установке выходит такая же ошибка.
Подскажите как решить эту проблему. Спасибо.
site/assets
site/protected/runtime
site/protected/config
Re: ygin - CMF/CMS система на yii
Права на запись стоят. Ошибка остаётся.