Страница 1 из 39

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

Добавлено: 2014.01.25, 12:58
vova07
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. Модераторов в случае сочтения этой темы недопустимой в данной категории, прошу удалить её, я дополню в таком случае этот топик. Хотя не уверен если это будет правильно, так как он относится больше к обзору, нежели к демо приложению.

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

Добавлено: 2014.01.25, 16:07
asset
для чего memcached,для такого блога?

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

Добавлено: 2014.01.25, 16:10
slavcodev
vova07 писал(а):С уважением, Василий!
:?

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

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

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

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

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

Добавлено: 2014.01.25, 16:20
samdark
Несоответствие никнейма? :)

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

Добавлено: 2014.01.25, 16:25
slavcodev
@SamDark, да :)
@vova07, не обращай внимания, это к теме не относится.

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

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

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

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

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

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

Добавлено: 2014.01.25, 16:39
futbolim
vova07 писал(а): Модули:
- Admin - ядро frontend-a
- Site - ядро backend-a
Видимо наоборот ?

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

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

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

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

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

Добавлено: 2014.01.25, 17:27
asset
без кэша,не проверял.

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

 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;
    }

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

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

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

Добавлено: 2014.01.25, 18:05
vova07
Поправил кэш на FileCache.

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

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

Добавлено: 2014.01.26, 07:07
tar_m
Я же уже рассказывал как это юзается и зачем

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

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

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

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

Добавлено: 2014.01.26, 08:59
samdark
Не такой уж большой объём. Find-replace.

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

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

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

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

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

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

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

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

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

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

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