Size: a a a

2020 September 11

А

Алексей R in Yii Framework 3
Сергей Предводителев
 'migrations' => [
 'default' => [
   'directory' => '@root/migrations',
   'namespace' => 'App\\Migration',
   'table' => 'migration',
   'safe' => false,
 ],
 'module1' => [
   'directory' => '@root/module1/migrations',
   'namespace' => 'App\\Module1\Migration',
   'table' => 'migration',
   'safe' => false,
 ],
],
не жестковато? автоматику сложно будет сделать (одного composer require не хватит, надо будет юзеру ещё и конфиги править)
источник

СП

Сергей Предводителев... in Yii Framework 3
Править ему надо будет если на модули будет разибвать
источник

СП

Сергей Предводителев... in Yii Framework 3
А если не будет, то там вот такой по-умолчанию:

 'migrations' => [
 'default' => [
   'directory' => '@root/migrations',
   'namespace' => 'App\\Migration',
   'table' => 'migration',
   'safe' => false,
 ],
],
источник

А

Алексей R in Yii Framework 3
ну вот давай, гипотетический модуль подключаем. Там OAuth какойнить крутой.
Ты юзеру пишешь:
Выполни composer require best-oauth-package
Дальше создай условную БД в конфиге со своим префиксом
Добавь в список migrations блок с такими то значениями, а в качестве ключа используй имя условной БД
Запусти миграции
Ничего не пропустил?
источник

СП

Сергей Предводителев... in Yii Framework 3
Алексей R
ну вот давай, гипотетический модуль подключаем. Там OAuth какойнить крутой.
Ты юзеру пишешь:
Выполни composer require best-oauth-package
Дальше создай условную БД в конфиге со своим префиксом
Добавь в список migrations блок с такими то значениями, а в качестве ключа используй имя условной БД
Запусти миграции
Ничего не пропустил?
осознал, я рассматривал модули не как отдельные пакеты, а разбиение внутри приложения просто.
источник

СП

Сергей Предводителев... in Yii Framework 3
Алексей R
ну вот давай, гипотетический модуль подключаем. Там OAuth какойнить крутой.
Ты юзеру пишешь:
Выполни composer require best-oauth-package
Дальше создай условную БД в конфиге со своим префиксом
Добавь в список migrations блок с такими то значениями, а в качестве ключа используй имя условной БД
Запусти миграции
Ничего не пропустил?
Может специально для модулей сделать интерфейс в yii-cycle, который в констуркторе будет получать имя БД, а возвращать схема-провайдеры (если они в файле), конфиг миграций и может ещё ччего там надо.

Тогда пользователю в своём конфиге надо будет добавить только new OAuthModuleConfig('oauth').
источник

СП

Сергей Предводителев... in Yii Framework 3
Хотя не понятно тогда как это переопределять...
источник

СП

Сергей Предводителев... in Yii Framework 3
К вопросу yii-cycle и модулей более узкий вопрос. Приложение разбито на модули (в рамках одного приложения, не пакеты), в каждом модуле есть файлик со схемой. И надо это дело прокинуть в ORM.

Сейчас чтобы это сделать надо писать в конфиг:

'schema-providers' => [
 FromFileSchemaProvider::class => [
   'file' => 'module1/cycle-schema.php'
 ],
 FromFileSchemaProvider::class => [
   'file' => 'module2/cycle-schema.php'
 ],
 FromFileSchemaProvider::class => [
   'file' => 'module3/cycle-schema.php'
 ],
],


Может для FromFileSchemaProvider добавить поддержку массивов, чтобы можно было и массив и строку передать, вот так:

'schema-providers' => [
 FromFileSchemaProvider::class => [
   'file' => [
     'module1/cycle-schema.php',
     'module2/cycle-schema.php',
     'module3/cycle-schema.php',
   ],
 ],
 FromFileSchemaProvider::class => [
   'file' => 'something/cycle-schema.php'
 ],
],


Норм идея?
источник

А

Алексей R in Yii Framework 3
Сергей Предводителев
К вопросу yii-cycle и модулей более узкий вопрос. Приложение разбито на модули (в рамках одного приложения, не пакеты), в каждом модуле есть файлик со схемой. И надо это дело прокинуть в ORM.

Сейчас чтобы это сделать надо писать в конфиг:

'schema-providers' => [
 FromFileSchemaProvider::class => [
   'file' => 'module1/cycle-schema.php'
 ],
 FromFileSchemaProvider::class => [
   'file' => 'module2/cycle-schema.php'
 ],
 FromFileSchemaProvider::class => [
   'file' => 'module3/cycle-schema.php'
 ],
],


Может для FromFileSchemaProvider добавить поддержку массивов, чтобы можно было и массив и строку передать, вот так:

'schema-providers' => [
 FromFileSchemaProvider::class => [
   'file' => [
     'module1/cycle-schema.php',
     'module2/cycle-schema.php',
     'module3/cycle-schema.php',
   ],
 ],
 FromFileSchemaProvider::class => [
   'file' => 'something/cycle-schema.php'
 ],
],


Норм идея?
> Сейчас чтобы это сделать надо писать в конфиг:

нет, не проканает
источник

А

Алексей R in Yii Framework 3
> Может для FromFileSchemaProvider добавить поддержку массивов
надо отдельный провайдер написать, который будет мержить схемы
источник

А

Алексей R in Yii Framework 3
идея интересная, конечно
источник

СП

Сергей Предводителев... in Yii Framework 3
А в чем там подвох, почему я не могу сделать просто array_merge ?
источник

СП

Сергей Предводителев... in Yii Framework 3
+ кидать исключение, если есть одинаковые ключи
источник

А

Алексей R in Yii Framework 3
Сергей Предводителев
А в чем там подвох, почему я не могу сделать просто array_merge ?
ни в чём, просто кейс с перечислением провайдеров не так работает )
источник

А

Алексей R in Yii Framework 3
как только схема получена из одного провайдера, все остальные не опрашиваются
источник

СП

Сергей Предводителев... in Yii Framework 3
Алексей R
ни в чём, просто кейс с перечислением провайдеров не так работает )
аааа... да с перечислением не сработает. Писал из головы не тестил)
источник

СП

Сергей Предводителев... in Yii Framework 3
Получается чтобы сейчас сделать, надо сделать файлик, который сделает мёрдж, а уже этот файлик прокинуть в провайдер схемы.
источник

А

Алексей R in Yii Framework 3
да и это можно настроить конфиг-плагином )
источник

СП

Сергей Предводителев... in Yii Framework 3
Алексей R
да и это можно настроить конфиг-плагином )
Да, если модули в отдельных пакетах - будет удробно. Но у меня в рамках одного приложения несколько файлов и получится надо будет в composer.json добавлять... не удобно :)

Была вроде идея для компосер-плагина на уровне приложения вынести в php-конфиг... вот там уже будет поудобнее мне кажется.
источник

СП

Сергей Предводителев... in Yii Framework 3
Но пока накидаю PR для схема провайдера... посмотрим как выглядеть будет. Вроде на первый взгляд старого ничего не ломает, а новую возможность добавляет.
источник