frops
@frops
Люблю читать книги

Как разработать модуль в Yii2 и в дальнейшем его легко подключать?

Всем привет. Созрел насущный вопрос для меня.

Я хочу разработать модуль для Yii2, который можно в дальнейшем легко подключать в другие проекты, скажем через composer. Отсюда несколько вопросов:

1. Как организовать миграции или импорт необходимых таблиц?
2. Как предотвратить пересечения таблиц в БД?
3. Как создать модуль, у которого есть и backend и frontend часть?
4. Как это сделать наиболее прозрачно для разработчика, который внедряет данный продукт?

Данный вопрос скорее на проработку структуры такого приложения. Нужно сформировать идеальное решение, ну, или почти идеальное )

Например, я хочу разработать модуль "новости" со своей структурой таблиц базы данных. И хочу, чтобы через composer подобный модуль устанавливался. Куда мне смотреть, чтобы получилось подобное решение?

Надеюсь на вашу поддержку, друзья.
  • Вопрос задан
  • 6438 просмотров
Решения вопроса 1
1. Как организовать миграции или импорт необходимых таблиц?

стандартно. Кладете миграции в module/migrations, в ридми указываете команду для миграции с --migrationPath

2. Как предотвратить пересечения таблиц в БД?

указывайте названия таблиц в таком виде
public function tableName()
{
return '{{%moduleName_tableName}}';
}

где moduleName - название вашего модуля

3. Как создать модуль, у которого есть и backend и frontend часть?

Холиварный достаточно вопрос. Мое мнение, что разбивать на две части контроллеры не нужно. Нужно необходимые экшны разбить по функционалу в разные контроллеры, а уже эти контроллеры разработчик будет унаследовать в своем проекте в нужных местах.
Если приведете конкретный пример, получите конкретное применение.

4. Как это сделать наиболее прозрачно для разработчика, который внедряет данный продукт?

см. п. 3. Опишите все в ридми.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sander_Li
@Sander_Li
Backend developer
Посмотри как устроенны расширения в официальном репозитории
Таблицы можно называть с определенным префиксом, для предотвращения пересечений.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы