И снова вопрос о файловой структуре проекта

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Nicolai6120
Сообщения: 143
Зарегистрирован: 2014.08.13, 15:08

И снова вопрос о файловой структуре проекта

Сообщение Nicolai6120 »

Добрый день.

Я наконец-то интегрировал авторизацию с помощью authclient, все работает отлично. Но есть нюансы. Все классы расширяющие стандартный authclient я положил в /common/components/authclient/...

Это расширение относится и к frontend и к backend одновременно, может быть использовано в обеих частях сайта. Дублировать код всего расширения в обе части приложения я нахожу неправильным, т.к. потом будут проблемы с поддержкой. Логично что оно должно попасть в common. НО, мне сказали что в common не должно быть кода не имеющего отношения к консольному приложению. Из чего делаю вывод, что authclient для консольного приложения не нужен, а значит НЕ ДОЛЖЕН БЫТЬ в папке common, так где ему место??

И очень часто возникает необходимость создания чего-то общего для frontend и backend, но не для консольного приложения. КУда класть такие расширения/компоненты, даже не знаю как это назвать...?

И наконец...

Сейчас беру готовый шаблон для админки. Там уже внутри куча своих frontend-плагинов вроде CKeditor и прочих, все они содержат кучу своих поддиректорий с js,css,картинками, да фиг знает с чем еще... Где все это должно лежать? Понятно что html разобьется на вьюхи и уйдет в папку views, а куда остальное?

В первой версии фрэймфорка была простая и понятная папка extensions, в которую можно было упихать все что душе угодно, сейчас есть vendor, но его содержимое вроде как руками трогать не желательно и не понятно, затрет ли composer твои поделки или нет. А еще они под gitignor окажутся. Значит нужно создать новую папку в корне проекта? Это правильно?
Последний раз редактировалось Nicolai6120 2017.03.04, 12:43, всего редактировалось 3 раза.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: И снова вопрос о файловой структуре проекта

Сообщение rak »

да не нужно вот прямо настолько заморачиваться что и где лежит, вполне нормальная структура получилась :) главное, чтобы каши не было
js, css итп можно публиковать через asset manager
Nicolai6120
Сообщения: 143
Зарегистрирован: 2014.08.13, 15:08

Re: И снова вопрос о файловой структуре проекта

Сообщение Nicolai6120 »

И все таки не место там authclient... Ведь к консоли он не относится. Неужели все так думают, что не стоит заморачиваться? Я начал заморачиваться когда у меня тесты (функциональные) неправильно работали из папки common, оказалось, что они оттуда не работают как нужно, т.к нет компонента urlManager (его нельзя определить в common/config/test.php) . . А проблема там по сути та же что описал в теме. Тест был общий и для frontend и для backend, хотелось его поместить в общую папку...В итоге пришлось его практически дублировать.
Nicolai6120
Сообщения: 143
Зарегистрирован: 2014.08.13, 15:08

Re: И снова вопрос о файловой структуре проекта

Сообщение Nicolai6120 »

Ладно фиг с ними с компонентами, а с админкой что делать? Куда класть все поддиректории шаблона с его плагинами и прочим?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: И снова вопрос о файловой структуре проекта

Сообщение maleks »

Nicolai6120 писал(а): 2017.03.03, 19:41 1) НО, мне сказали что в common не должно быть кода не имеющего отношения к консольному приложению.

2) сейчас есть vendor, но его содержимое вроде как руками трогать не желательно и не понятно, затрет ли composer твои поделки или нет.
1) Нет, там код общий для хотя бы двух приложений.

2) можно трогать руками, композер не затрет.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: И снова вопрос о файловой структуре проекта

Сообщение mat.twg »

Nicolai6120 писал(а): 2017.03.04, 12:39 Ладно фиг с ними с компонентами, а с админкой что делать? Куда класть все поддиректории шаблона с его плагинами и прочим?
В модуль например... все плагины отдельными виджетами либо собери свой asset из JS/CSS, в любом случае надо мутить с Asset manager'ом смотреть что откуда зависит и строить правильную наследственность.
Nicolai6120 писал(а): 2017.03.03, 19:41 2) сейчас есть vendor, но его содержимое вроде как руками трогать не желательно и не понятно, затрет ли composer твои поделки или нет.
Если будешь править файлы в vendor смысл композера отпадает в таком случае. Максимум наследовать или писать свои виджеты... (Вообще там лучше ничего не менять - никогда!)
Nicolai6120
Сообщения: 143
Зарегистрирован: 2014.08.13, 15:08

Re: И снова вопрос о файловой структуре проекта

Сообщение Nicolai6120 »

В модуль например... все плагины отдельными виджетами либо собери свой asset из JS/CSS, в любом случае надо мутить с Asset manager'ом смотреть что откуда зависит и строить правильную наследственность.
За идею спасибо.

А что Вы скажете насчет того, что есть в проекте bower. Может потянуть с помощью bower все frontend-модули? А уже в моих виджетах ссылаться на /vendor/bower/... ? По идее при таком варианте bower сам будет следить за зависимостями и не допустит дублей и прочих неприятностей, плюс обновление будет более удобным, не?

Правильно ли создать виджеты, которые опираются на код из /vendor/bower/... ? (в смысле не физически, а в плане последствий)
И я так понимаю , что в bower все равно не все модули найдутся и часть все же придется засунуть внутрь самого модуля.
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: И снова вопрос о файловой структуре проекта

Сообщение Йож »

Все, что касается консоли, лежит в папке console (по крайней мере в advanced)
А common - так и переводится с английского общий.

Ассеты лежат в папке /backend/assets и /frontend/assets, сами js и css в папке /backend/web/css и /frontend/web/css (/backend/web/js и /frontend/web/js).

Если шаблон типа basic , то backend и frontend в путях отпадает.
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: И снова вопрос о файловой структуре проекта

Сообщение mat.twg »

Nicolai6120 писал(а): 2017.03.04, 16:44
В модуль например... все плагины отдельными виджетами либо собери свой asset из JS/CSS, в любом случае надо мутить с Asset manager'ом смотреть что откуда зависит и строить правильную наследственность.
За идею спасибо.

А что Вы скажете насчет того, что есть в проекте bower. Может потянуть с помощью bower все frontend-модули? А уже в моих виджетах ссылаться на /vendor/bower/... ? По идее при таком варианте bower сам будет следить за зависимостями и не допустит дублей и прочих неприятностей, плюс обновление будет более удобным, не?

Правильно ли создать виджеты, которые опираются на код из /vendor/bower/... ? (в смысле не физически, а в плане последствий)
И я так понимаю , что в bower все равно не все модули найдутся и часть все же придется засунуть внутрь самого модуля.
Вы не совсем правильно представляете себе картину... bower как composer - это всё пакетные менеджеры, их задача загрузить пакет со всеми зависимостями либо обновить/удалить. За пакет отвечает его разработчик. Но! Очень часто, особенно в шаблонах, которые пишут новички начинается каша, изменение пакетных файлов, из-за этого множество проблем и невозможность пользовать официальные пакеты. Потому с репы скачиваем одно, а в шаблоне оно напрочь всё изменено недопрогерами... (Никому же не приходит лезть в исходник JQuery и делать там свою фичу...)
Так вот! Использовать официальные пакеты не только можно, но и нужно! Все остальные надстройки "выводите за скобки".

Изображение

Это как раз пример таких вот плагинов и шаблонов, которые тащат за собой кучу всего, и как правило в шаблоне люди не парятся, и грузят все и сразу на каждую страницу... чтобы это всё говно растащить по логике, придётся потратить достаточно времени... очень редко попадаются качественные работы... но если пофиг, пожалуйста - заряжайте весь asset как в шаблоне на каждую страницу через лэйаут.

Дальше, что качается модулей - ничего не понял. Модуль один и называется Admin, например! дальше подмодули и под-под модули сколько угодно... URL менеджер можно с лёгкостью настроить (он даже по умолчанию, кажется, разруливает... если всё адекватно сделано)
И никто не запрещает, а даже наоборот использовать для бэкенда проект Advanced, там сразу всё разделено на Front и Back... и никаких проблем.
Так что если у тебя админка - это отдельное приложение, то разворачивай сразу Advanced, если некое подобие то можно и на Basic сделать.

псы: на скрине из папки widgets лучше перенести все ассеты в папку assets...
Nicolai6120
Сообщения: 143
Зарегистрирован: 2014.08.13, 15:08

Re: И снова вопрос о файловой структуре проекта

Сообщение Nicolai6120 »

Шаблон естественно advanced у меня, иначе откуда папки frontend, backend и common?
Дальше, что качается модулей - ничего не понял. Модуль один и называется Admin, например! дальше подмодули и под-под модули сколько угодно... URL менеджер можно с лёгкостью настроить (он даже по умолчанию, кажется, разруливает... если всё адекватно сделано)
Мне кажется плодить подмодули в модуле admin неправильно. Пусть все лежит на одном уровне:

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

/backend
	/modules
		/admin
		/news
		/post
		/user
		/rbac
		/...
В папке admin пусть лежат все основные лейауты шаблона. А большую часть виджетов и требуемых для них ассетов, судя по всему, придется разместить в common, т.к. тот же fancybox может использоваться и в админке и во фронтенд-части.
Вы не совсем правильно представляете себе картину... bower как composer
Я это понимаю и как раз моей задумкой было не складывать все необходимые фронтенд-модули в /backend/modules/admin/... , а сделать ассеты с sourcePath = /vendor/bower/... , как раз, как у Вас на скриншоте. Я так понял это правильный подход. И разложить эти ассеты уже между common и backend (что-то ведь может во фронтенде совсем не использоваться)

И действительно встает вопрос, как лепить ассет-бандлы для различных подстраниц админки. Скажем где-то требуется визуальный редактор, а где-то нет, а шаблон то общий... Видимо придется регистрировать нужные ассеты уже непосредственно во view-файлах (не лейаутах).
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: И снова вопрос о файловой структуре проекта

Сообщение mat.twg »

Nicolai6120 писал(а): 2017.03.05, 11:29 И действительно встает вопрос, как лепить ассет-бандлы для различных подстраниц админки. Скажем где-то требуется визуальный редактор, а где-то нет, а шаблон то общий... Видимо придется регистрировать нужные ассеты уже непосредственно во view-файлах (не лейаутах).
Вот как раз для этого и заворачивайте всё в виджеты, например imeravi от Vova07 или гора виджктов от Kartik'а... и используйте в любой вьюхе проекта...

псы: в примере мне лень было писать отдельный виджет для галереи.. однако суть примера была в том чтобы отобразить базовые принципы наследования и регистрации JS/CSS в правильной последовательности, например если вы используете несколько виджетов на одной странице.
Ответить