Всем привет,
После долгих лет разработки пришли к выводу что 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 жило)
Что забыли добавить и добавим в ближайшем будущем:
- Контроллеры под регистрацию (в наших проектах эта вещь дико специфическая в каждом проекте, поэтому не делали пока общую)
- Выбор роли юзера на странице редактирования юзера (вот это реально не хватает )
Буду рад комментам.
Yii2 Starter - шаблон для старта приложения с простой админкой
- aprokopenko
- Сообщения: 6
- Зарегистрирован: 2018.02.05, 21:48
- Контактная информация:
- proctoleha
- Сообщения: 298
- Зарегистрирован: 2016.07.10, 19:00
Re: Yii2 Starter - шаблон для старта приложения с простой админкой
Без обид, но это не релиз, а в лучшем случае пре-релиз
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 UserForm extends User
Зачем? Так? Делать?
.
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 - шаблон для старта приложения с простой админкой
На счет пре-релиз - полностью соглашусь... Не всегда успеваю обновлять документацию и есть мелкие недочеты.
2) Юзера накатываются через фикстуры. Первому юзеру ставится супер админ роль в процессе инстала и выполнения команд по rbac. Его логин пароль:
[email protected] / password_0
Для доступа в админку просто /admin. Из соображений безопасности до логина ссылка выдает 404.
Но согласен не очевидно - добавлю в меню пункт после логина (пока впишу в issues).
3) Сенкс, впишу в issues.
4) Такой способ я нашел на этом же форуме, когда только вышла бета 2й версии. С тех пор им и пользуюсь. Спасибо за ссылку, попробую.
5)
Зачем отдельно заново определять весь класс формы в таком случае.
Конечно если форма сложная на несколько моделей - то так делать не надо и просто наследоваться от Model и писать всю логику.
-----
Буду рад также комментариям по общему впечатлению, а не только ошибкам)))
2) Юзера накатываются через фикстуры. Первому юзеру ставится супер админ роль в процессе инстала и выполнения команд по rbac. Его логин пароль:
[email protected] / password_0
Для доступа в админку просто /admin. Из соображений безопасности до логина ссылка выдает 404.
Но согласен не очевидно - добавлю в меню пункт после логина (пока впишу в issues).
3) Сенкс, впишу в issues.
4) Такой способ я нашел на этом же форуме, когда только вышла бета 2й версии. С тех пор им и пользуюсь. Спасибо за ссылку, попробую.
5)
Обычно если форма не сильно отличается от самой модели, чтобы не переопределять заново все rules и поля - мы просто наследуем. В Yii нет четкой грани между формой и AR (потому что AR наследуется от Model).
Зачем отдельно заново определять весь класс формы в таком случае.
Конечно если форма сложная на несколько моделей - то так делать не надо и просто наследоваться от Model и писать всю логику.
-----
Буду рад также комментариям по общему впечатлению, а не только ошибкам)))
- proctoleha
- Сообщения: 298
- Зарегистрирован: 2016.07.10, 19:00
Re: Yii2 Starter - шаблон для старта приложения с простой админкой
https://yii2-cookbook.readthedocs.io/mvc/aprokopenko писал(а): ↑2018.02.06, 11:56 Обычно если форма не сильно отличается от самой модели, чтобы не переопределять заново все rules и поля - мы просто наследуем. В Yii нет четкой грани между формой и AR (потому что AR наследуется от Model).
Зачем отдельно заново определять весь класс формы в таком случае.
Т.е. сами разработчики 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.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.
Иначе, имхо, нет смысла выносить формы в отдельный класс.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Re: Yii2 Starter - шаблон для старта приложения с простой админкой
во-первых, не вижу, во-вторых, модель MVC - это слой данных, а не какая-то конкретная сущность, из чего следует, что и AR и формы - это модель MVC.proctoleha писал(а): ↑2018.02.06, 15:14Т.е. сами разработчики yii2 говорят, что их модель это не модель MVC
- aprokopenko
- Сообщения: 6
- Зарегистрирован: 2018.02.05, 21:48
- Контактная информация:
Re: Yii2 Starter - шаблон для старта приложения с простой админкой
Это конечно все хорошо и в других фреймворках так и есть (Доктрина, Элоквент и т.д.). НО сам генератор кода йии генерирует метод rules() в AR, метод save() запускает validate(), у него есть куча ивентов на beforeValidate / beforeSave и т.д. Сами разработчики сделали все это, тем самым нарушив половину принципов SOLID. Можно конечно работая в Йии - не следовать и не использовать фичи, которые он дает. Только тогда будет вопрос - зачем мы разрабатываем на Йии.proctoleha писал(а): ↑2018.02.06, 15:14 https://yii2-cookbook.readthedocs.io/mvc/
Т.е. сами разработчики yii2 говорят, что их модель это не модель MVC, и ActiveRecord classes should not contain any significant business logic.
Т.е. сами разработчики это все сделали уже внутри. В примерах йии (и генераторе их кода) - они спокойно генерят 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 - шаблон для старта приложения с простой админкой
В любом случае за ошибки спасибо, часть исправил и залил: https://github.com/justcoded/yii2-start ... /tag/0.8.5
- aprokopenko
- Сообщения: 6
- Зарегистрирован: 2018.02.05, 21:48
- Контактная информация: