Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Выкладываем свои наработки
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение vova07 » 2014.01.25, 12:58

UPD:

Всем привет!
Наконец появилось чуток свободного времени, и я смог довести до ума новую версию приложения. Сразу хочу попросить прощения что она вышла столь поздно.

Что нового:
- Первое и самое основное, это полностью переписаное приложение. Весь код был переписан с нуля, и структура приложения была изменена под подобие "advanced". Это позволило добавить установку через composer, и сделать код совместимым с последней версией фреймворка.
- Логика работы приложения полностью изменилось. На данный момент это некий эксперимент, создания мини систсемы, которая бы позволяла быстро и удобно подключать\отключать нужные\ненужные модули и компоненты и модули. Суть в том что весь код организован в виде модульных пакетов которые устанавливаются через composer. Их легко переопределить, а кастомизацию можно делать через еще одное нововедение, как "Темы".
- Были добавлены бесплатные шаблоны.
Админка теперь работает на AminLTE шаблоне, из этого списка он вроде лучший по качеству и функциональности.
Фронтенд сверстан на основе "Flat Theme", который тоже лидирует в этом списке по количеству доступных страниц, и давольно качественный.
Если у кого есть более хорошие примеры, пишите, обязательно посмотрю, так как много сил на поиск тем не тратил. По этому есть то что есть.
- После апдейта, бэкенд приложения доступен на одном и том же домене что и сайт, и никаких доп настроек уже делать не нужно. По дефолту он достуепн по адресу : http://my-site.com/backend/
- Также после апдейта есть некоторые нехорошие моменты: не все модули были переписаны, и функционал на данный момент не такой какой планировался, но если система будет кому-то интересна, она будет развиватся, если нет то будет юзатся только мной.

Ссылка на гитхаб.
Ссылка на демо сайт.
Ссылка на демо админки. (Логин: admin | Пароль: admin12345)
Видео инструкция по установке приложения

Это вроде все, если у кого есть желание помочь, прошу на гитхаб, пул реквесты всегда приветсвуются. Если у кого есть предложения по улучшению тоже буду рад, но отдельное спасибо скажу знатокам форума которые поделятся своим мнением касательно логики работы приложения, и конечно касательно качествы кода.

Всем хорошего времени суток!

Old version:

Здравствуйте, уважаемыйе форумчани!

Сегодня я наконец собрал то демо приложение которое многие ждали и которое по просьбам многих пользователей я давно должен был сделать.
Прошу простить и понять за столь длиный срок, но работа никак не давала покоя.
Сразу скажу - писалось все быстро и в свободное время (которого почти небыло), по этому возможны ошибки, недочеты, опечатки, но в случае если приложение будет кому либо нужное и принесёт пользу, я буду старатся её поддерживать и развивать, главное чтоб это было нужно.
Все ваши предложения или баги прошу писать на гитхаб, а я буду старатся быстро все исправлять.

Собственно само приложение на Github.
И простое демо.

По функционалу можно почитать на самом демо сайте на главной странице, тут только напишу короткий список модулей и виджетов.

Модули:
- Admin - ядро backend-a
- Site - ядро frontend-a
- Blogs - модуль блогов
- Users - модуль пользователей
- Comments - модуль комментариев
- Categories - модуль категорий постов
- RBAC - очень простой модуль с RBAC ролями пользователей на основе файловой системы

Расширения:
- FileAPI - для асинхроной загрузки
-TinyMCE - редактор

Виджеты:
- Comments - виджет комментариев
- Categories - виджет категорий
- Posts - виджет последних постов

Для всего этого есть админка с возможностью управлять нужными записями, хотя выглядит она не очень, да и далеко не закончена в плане юзабильности и функциональности. (Кстати в демо примере её не показал так как не успеваю подправить код для безопастности моего хостинга, но вы сможете установить все у себя, и поглядеть.)

Инструкция по установке есть на Github.

Из особеностей данного приложения хочу заметить некоторые моменты:
- Приложение основана полностью на модульной струткуре, несмотря на то что полной независимости у них нет, это позволяет удобно поддерживать код.
- Данное приложение подходит больше для крупных проектов, но ничего не мешает использовать каркас и для более мелких приложений.
- Толстые модели, тонкие контроллеры.
- Большая часть логики основана на сценариях.
- Структура похожа на официальное "advanced" приложение, с некоторыми правками.
- Все комментарии, тексты, инструкции написаны на русском. (Прошу прощения за это, но мой писменый английский не такой хорош.)

Буду рад любым отзывам, критике, и предложениям. Готов по возможности ответить на ваши вопросы.

С уважением, Василий!

P.S. Модераторов в случае сочтения этой темы недопустимой в данной категории, прошу удалить её, я дополню в таком случае этот топик. Хотя не уверен если это будет правильно, так как он относится больше к обзору, нежели к демо приложению.
Последний раз редактировалось vova07 2015.04.23, 17:48, всего редактировалось 6 раз.

Аватара пользователя
asset
Сообщения: 245
Зарегистрирован: 2012.12.04, 20:50
Откуда: Казахстан

Re: Yii2-Start демо приложение.

Сообщение asset » 2014.01.25, 16:07

для чего memcached,для такого блога?

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: Yii2-Start демо приложение.

Сообщение slavcodev » 2014.01.25, 16:10

vova07 писал(а):С уважением, Василий!
:?
Жду Yii 3!

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start демо приложение.

Сообщение vova07 » 2014.01.25, 16:14

asset писал(а):для чего memcached,для такого блога?
Это не обязательно. Вы можете поменять на любой удобный вам. FileCache вполне подойдет.

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start демо приложение.

Сообщение vova07 » 2014.01.25, 16:15

slavcodev писал(а):
vova07 писал(а):С уважением, Василий!
:?
Честно, не понял, что данное сообщение означает!

Аватара пользователя
samdark
Администратор
Сообщения: 9104
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2-Start демо приложение.

Сообщение samdark » 2014.01.25, 16:20

Несоответствие никнейма? :)

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: Yii2-Start демо приложение.

Сообщение slavcodev » 2014.01.25, 16:25

@SamDark, да :)
@vova07, не обращай внимания, это к теме не относится.
Жду Yii 3!

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start демо приложение.

Сообщение vova07 » 2014.01.25, 16:27

Sam Dark писал(а):Несоответствие никнейма? :)
Ах ... если дело в этом то, просто так исторически сложилось что мой псевдоним в интернете "vova07", несмотря на то что зовут меня Василий. Раньше делалось это чтоб заки узнавали, теперь уже привычка, везде где свободно беру себе этот логин. Надеюсь никто не осудит.

Аватара пользователя
asset
Сообщения: 245
Зарегистрирован: 2012.12.04, 20:50
Откуда: Казахстан

Re: Yii2-Start демо приложение.

Сообщение asset » 2014.01.25, 16:28

vova07 писал(а):
asset писал(а):для чего memcached,для такого блога?
Это не обязательно. Вы можете поменять на любой удобный вам. FileCache вполне подойдет.
Может убрать его,если убрать в конфиге ошибка вылезет.

да ладно чо вы ) С уважением, Вовка!

Аватара пользователя
futbolim
Сообщения: 2049
Зарегистрирован: 2012.07.08, 19:28

Re: Yii2-Start демо приложение.

Сообщение futbolim » 2014.01.25, 16:39

vova07 писал(а): Модули:
- Admin - ядро frontend-a
- Site - ядро backend-a
Видимо наоборот ?

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start демо приложение.

Сообщение vova07 » 2014.01.25, 16:40

Да если сейчас отключить полностью кэширование, то всплывает ошибка которая связана с тем что некоторые функции пытаются закэшировать свой результат.
Если это нужно я могу сменить кэш на "FileCache", и добавить для них совместное хранилище в корневой директории например под названием "cache". На данный момент это нужно чтобы можно было очищать кэш frontend-а из админ части и наоборот во время добавление новых записей в базу.

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start демо приложение.

Сообщение vova07 » 2014.01.25, 16:42

futbolim писал(а):
vova07 писал(а): Модули:
- Admin - ядро frontend-a
- Site - ядро backend-a
Видимо наоборот ?
Да. Подправил!

Аватара пользователя
asset
Сообщения: 245
Зарегистрирован: 2012.12.04, 20:50
Откуда: Казахстан

Re: Yii2-Start демо приложение.

Сообщение asset » 2014.01.25, 17:27

без кэша,не проверял.

Код: Выделить всё

 public function getCategoryArray()
    {
         $value = self::find()
        ->select(['id', 'title'])
        ->orderBy('ordering ASC, title ASC')
        ->published()
        ->asArray()->all();  
                     
        $value = ArrayHelper::map($value, 'id', 'title'); 
                         
        return $value;
    }

tar_m
Сообщения: 140
Зарегистрирован: 2012.12.26, 07:37

Re: Yii2-Start демо приложение.

Сообщение tar_m » 2014.01.25, 17:49

Все бы ничего
\common\modules\blogs\modules\categories\Categories
Может все таки сделать возможность в коре прописывать алиасы? на модули автоматом а то вот такое выносит мозг да еще если что то изменится....

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start демо приложение.

Сообщение vova07 » 2014.01.25, 18:05

Поправил кэш на FileCache.

Касательно алиасов, то если честно не могу понять их смысл. В Yii2 везде используются namespace которые для этого предназначены, зачем изобретать что-то другое?!
Я согласен что namespace длинный очень, и не очень удобно его писать, но namespace более наглядный чем alias так как в случае с последним не сразу ясно где искать нужный класс.

tar_m
Сообщения: 140
Зарегистрирован: 2012.12.26, 07:37

Re: Yii2-Start демо приложение.

Сообщение tar_m » 2014.01.26, 07:07

Я же уже рассказывал как это юзается и зачем

Скажу еще раз.
Есть у нас модуль page
все что находится внутри этого модуля должно содержать полный путь - внешний путь + локальный
в нашем случае будет
\common\modules\page\models\PageModel

Так вот представим такую ситуацию, приходит началник и говорит - что за common? переносим это все во frontend
Представляете обьем работы который нужно будте сделать? поменять все неймспейсы внутри всего модуля
Это просто пример

Теперь с алисами
мы прописываем на каждый модуль свой алиас
в данном случае на папку page
Теперь все что внутри должно вызватся не через common а через уже локального уровня page
то есть то же выражение будет выглядеть \page\models\PageModel

Аватара пользователя
samdark
Администратор
Сообщения: 9104
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2-Start демо приложение.

Сообщение samdark » 2014.01.26, 08:59

Не такой уж большой объём. Find-replace.

tar_m
Сообщения: 140
Зарегистрирован: 2012.12.26, 07:37

Re: Yii2-Start демо приложение.

Сообщение tar_m » 2014.01.26, 11:13

мда... почему бы тогда не делать у всех расширений неймспейс от корня собственного приложения?
Чего уж там? фигня! find replace тебе поможет
А раде чего? нету внятных причин. То есть у расширения есть свой локальный алиас, а у модулей- нафига - буду писать все от корня который кстати тоже ялвяется модулем и имеет совой алиас (app)

Sam Dark я уже слышал от вас, что подобное встраивать во фреймворк вы не хотитте, но понятной и логичной аргументации почему так и не услышал.

lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Yii2-Start демо приложение.

Сообщение lemb » 2014.01.26, 11:23

Вообще есть некоторый осадок что убрали возможность иметь структуру:

Код: Выделить всё

module/controller/subdirectory/SomeController.php
Решение засовывать модуль в модуль - как-то костыльно смотрится.

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start демо приложение.

Сообщение vova07 » 2014.01.26, 12:09

@tar_m По поводу алиасов.
(ИМХО) Лично я, не хочу их использовать потому что:
- Они искажают реальный путь к классу, и для новичков в команде будет не так просто понимать и находить нужные классы. Это правда что у нас есть алиасы для самих приложений, но их только 3 и они интуитивно понятны любому, что нельзя сказать про модули. В тоже время модули есть и в common, и в frontend и в backend, что влечёт за собой необходимость префиксов, и в итоге получаем примерно тоже самое.
- По аналогии выходит что мы должны прописывать алиасы не только для модулей но и для других папок как например: extensions, helpers, behaviors, которые снова допустимы в разных частях приложения, что повлечёт за собой необходимость префиксов, и в результате сильного удобства мы не получим.
- Не уверен что у меня будут проблемы с начальником касательно структуры. Он во первых ничего в этом скорее всего не шарит, а во вторых структура приложения определяется на первоначальной стадии её проектирования, после чего эта структура одобряется, и только тогда начинает использоваться. Изменения в таких случаях возможны, только если это нужно для функциональной части, а если это касается хотелок, то у нас неправильный начальник, или кто-то неправильно спроектировал и одобрил структуру.
Это чисто моё мнение, что вполне может не совпадать с большинством. Конечно если это будет одобрено на уровне фрейма я готов переделать все и использовать алиасы, а пока, я просто не вижу в них необходимости.

@lemb Касательно разбивки контроллеров на папки.
На сколько я помню такая тема на гитхабе уже есть, и она там обсуждается. Вроде как понял что такая возможность будет добавлена.

Что касается непосредственно моей структуры и вложенных модулей, я не соглашусь что это костыль. Блоги у нас это блоги, а их категории это отдельный модуль, со всеми полагающими. В данном случае я бы посчитал костылём использования разбивки контроллеров на папки. Под модулем я понимаю комплексную структуру, и чтоб определить нужен ли мне модуль или нет, я просто задаю себе пару вопросов:
- нужна ли будет реализация админ управления?
- нужна ли будет реализация управления записями на фронтенде?
- будут ли нужны доп виджеты для этого функционала?
- есть ли отдельная модель или поведения?
- и.т.д.
Если это так, то я без оговорок создаю модуль и использую его, так как это легко поддерживается и переписывается, + возможно я просто привык к модульным системам.

Ответить