Yii2 Starter - шаблон для старта приложения с простой админкой

Выкладываем свои наработки
Ответить
Аватара пользователя
aprokopenko
Сообщения: 6
Зарегистрирован: 2018.02.05, 21:48
Контактная информация:

Yii2 Starter - шаблон для старта приложения с простой админкой

Сообщение aprokopenko »

Всем привет,

После долгих лет разработки пришли к выводу что advanced template избыточен для обычных приложений.
Усложняет редактирование/понимание кода и т.д. и т.п. Basic при этом не имеет ничего и приходится много пилить с нуля каждый раз.
Да и морально устарели что Basic, что Advanced.

Сборка от Тереньева (https://github.com/trntv/yii2-starter-kit) реально хороша, но опять на базе advanced, чего не хочется. Также изучив кучу известных модулей по админкам, правам, сеттингам и т.д. - пришел к выводу что интерфейс для пользователя всех этих модулей остался где-то в 2010.

Поэтому сделали свою сборку, которая находится где-то между basic/advanced с минимальным набором компонент, которые есть практически в любом проекте:

https://github.com/justcoded/yii2-starter

Что внутри:
- .env рулит :)
- улучшенная файловая структура (по аналогии с многими другими фреймворками), также отделили формы от моделей - по разным папкам.
- улучшенная поддержка IDE - возможность объяснять Yii::$app свои компоненты, св-ва и т.д.
- более явное разделение на консоль и веб в файловой структуре
- фронт от basic template
- модуль для админки на базе AdminLTE темы
- пример дашборд (просто html, скопированный с adminlte)
- управление пользователями (грид/форма) (внешние модули не использовались по причине страшности, а также переписывании их потом в реальных проектах на 50+% по требованиям заказчика)
- подключенный компонент (тоже свой) по управлению ролями/правами доступа в таком виде, в котором им можно пользоваться и хотя бы понятно как и что.
- подключенный компонент (тоже свой) по управлению settings. Компонент позволяет быстро клепать сеттинг формы и иметь к ним доступ как к описанным объектам, по которым нормально работает IDE. Для примера сделана базовая форма с админ емейлом, настройками времени жизни токена и т.д. (вобщем то, что обычно в params.php жило)

Что забыли добавить и добавим в ближайшем будущем:
- Контроллеры под регистрацию (в наших проектах эта вещь дико специфическая в каждом проекте, поэтому не делали пока общую)
- Выбор роли юзера на странице редактирования юзера (вот это реально не хватает :) )

Буду рад комментам.
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Yii2 Starter - шаблон для старта приложения с простой админкой

Сообщение proctoleha »

Без обид, но это не релиз, а в лучшем случае пре-релиз

1. В мане: Now you should be able to access the application through the following URL, assuming my-project is the directory directly under the Web root.
http://localhost/my-project/web/

По факту DocumentRoot - /path/your/application/public

2. Как зайти в админку? Где логин и пароль какой логин и пароль суперпользователя? Нет, помедитировав, покопавшись в коде, я в админку попал, но где это в мане?

3. Консоль хрома выдала мне три ошибки, главная из них: admin.min.js not found
Соответственно боковое меню не раскрывается, и до настроек просто так не добраться

4. Зачем явно переопределять главные системные файлы Yii.php и Application.php из папки vendor? Для корректной работы IDE рекомендуют так: https://yii2-cookbook.readthedocs.io/id ... ompletion/

5. Вы пишете:
отделили формы от моделей - по разным папкам
Смотрим: class User extends ActiveRecord implements IdentityInterface
Смотрим: class UserForm extends User

Зачем? Так? Делать?
.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Аватара пользователя
aprokopenko
Сообщения: 6
Зарегистрирован: 2018.02.05, 21:48
Контактная информация:

Re: Yii2 Starter - шаблон для старта приложения с простой админкой

Сообщение aprokopenko »

На счет пре-релиз - полностью соглашусь... Не всегда успеваю обновлять документацию и есть мелкие недочеты.

2) Юзера накатываются через фикстуры. Первому юзеру ставится супер админ роль в процессе инстала и выполнения команд по rbac. Его логин пароль:
admin@domain.com / password_0

Для доступа в админку просто /admin. Из соображений безопасности до логина ссылка выдает 404.
Но согласен не очевидно - добавлю в меню пункт после логина (пока впишу в issues).

3) Сенкс, впишу в issues.

4) Такой способ я нашел на этом же форуме, когда только вышла бета 2й версии. С тех пор им и пользуюсь. Спасибо за ссылку, попробую.

5)
proctoleha писал(а): 2018.02.06, 10:13 > Смотрим: class UserForm extends User
Обычно если форма не сильно отличается от самой модели, чтобы не переопределять заново все rules и поля - мы просто наследуем. В Yii нет четкой грани между формой и AR (потому что AR наследуется от Model).
Зачем отдельно заново определять весь класс формы в таком случае.
Конечно если форма сложная на несколько моделей - то так делать не надо и просто наследоваться от Model и писать всю логику.

-----

Буду рад также комментариям по общему впечатлению, а не только ошибкам)))
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Yii2 Starter - шаблон для старта приложения с простой админкой

Сообщение proctoleha »

aprokopenko писал(а): 2018.02.06, 11:56 Обычно если форма не сильно отличается от самой модели, чтобы не переопределять заново все rules и поля - мы просто наследуем. В Yii нет четкой грани между формой и AR (потому что AR наследуется от Model).
Зачем отдельно заново определять весь класс формы в таком случае.
https://yii2-cookbook.readthedocs.io/mvc/
ActiveRecord classes should not contain any significant business logic. It deserves to be in separate classes which are built according to SOLID and Dependency Inversion. Don't be afraid to create your own classes which are not inherited from anything from the framework.
Т.е. сами разработчики yii2 говорят, что их модель это не модель MVC, и ActiveRecord classes should not contain any significant business logic, и если продолжить логическую цепочку, то rules там нафиг не нужны. AR прекрасно работает с БД? Вот и пусть ТОЛЬКО этим и занимается. А валидировать будем в форме. А всю бизнес логику, все if(ы), свичи, форычи в don't be afraid to create your own classes which are not inherited from anything from the framework.

Иначе, имхо, нет смысла выносить формы в отдельный класс.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 Starter - шаблон для старта приложения с простой админкой

Сообщение zelenin »

proctoleha писал(а): 2018.02.06, 15:14Т.е. сами разработчики yii2 говорят, что их модель это не модель MVC
во-первых, не вижу, во-вторых, модель MVC - это слой данных, а не какая-то конкретная сущность, из чего следует, что и AR и формы - это модель MVC.
Аватара пользователя
aprokopenko
Сообщения: 6
Зарегистрирован: 2018.02.05, 21:48
Контактная информация:

Re: Yii2 Starter - шаблон для старта приложения с простой админкой

Сообщение aprokopenko »

proctoleha писал(а): 2018.02.06, 15:14 https://yii2-cookbook.readthedocs.io/mvc/

Т.е. сами разработчики yii2 говорят, что их модель это не модель MVC, и ActiveRecord classes should not contain any significant business logic.
Это конечно все хорошо и в других фреймворках так и есть (Доктрина, Элоквент и т.д.). НО сам генератор кода йии генерирует метод rules() в AR, метод save() запускает validate(), у него есть куча ивентов на beforeValidate / beforeSave и т.д. Сами разработчики сделали все это, тем самым нарушив половину принципов SOLID. Можно конечно работая в Йии - не следовать и не использовать фичи, которые он дает. Только тогда будет вопрос - зачем мы разрабатываем на Йии.

Т.е. сами разработчики это все сделали уже внутри. В примерах йии (и генераторе их кода) - они спокойно генерят PostSearch модель, которая наследуется от Post, при этом эта модель отвечает за 2 вещи: ФОРМУ и формирование DataProvider.

Также генераторы кода отлично используют AR как обработчики форм. Так что я не вижу ничего плохого, чтобы обработчик формы наследовать от AR, чтобы следовать принципам DRY (don't repeat yourself) и как раз не плодить ненужную логику в AR.

(Ну и я напомню, что God-class Object в йии - является родителем вообще всего... Давайте тогда уже говорить что надо просто не использовать большую часть компонентов, потому что они неправильно сделаны и неоптимально)
Аватара пользователя
aprokopenko
Сообщения: 6
Зарегистрирован: 2018.02.05, 21:48
Контактная информация:

Re: Yii2 Starter - шаблон для старта приложения с простой админкой

Сообщение aprokopenko »

В любом случае за ошибки спасибо, часть исправил и залил: https://github.com/justcoded/yii2-start ... /tag/0.8.5
Ответить