Всем привет! Планирую делать различные модули? Которые должны как-то взаимодействовать друг с другом. Получать какие-то данные для логики.
Для этого у меня есть два варианта:
Сделать виджеты
Сделать API
Как вы используете? Подскажите...
Например, делаю модуль гео. Он будет отвечать за хранение информации о городах, странах и регионах. Он независим от других.
Далее делаю модуль мероприятий. Где город нужно получить из другого модуля. Желательно в базе ещё и хранить id, вместо строки.
Как соблюсти не связанность модулей и при этом чтоб все функционировало. Возможно придётся использовать и виджет и api, ведь нужно ещё и выводить на странице название города, а не id.
В общем подскажите как лучше сделать.
И второй вопрос как правильно реализовать api в модуле?
Было бы не плохо посмотреть на примеры)
Мой уровень средний. Изучаю Фреймворк чуть больше года. Прошу отвечать опираясь на этот факт))
Благодарю!
Связи в модулях. API в модулях.
-
- Сообщения: 147
- Зарегистрирован: 2017.11.15, 23:54
Re: Связи в модулях. API в модулях.
На примере модуля "dealer" (дилер)
1. Делаю таблицу dealer_to_geo
2. Добавляю релейшн в модель Dealer - getDealerGeo() via table dealer_to_geo
3. Добавляю public static function в модели Geo, чтобы выбирать все доступные Geo для выпадающего списка
4. Добавляю в форму создания/редактирования Dealer выпадающий список для выбора Geo
1. Делаю таблицу dealer_to_geo
2. Добавляю релейшн в модель Dealer - getDealerGeo() via table dealer_to_geo
3. Добавляю public static function в модели Geo, чтобы выбирать все доступные Geo для выпадающего списка
4. Добавляю в форму создания/редактирования Dealer выпадающий список для выбора Geo
- proctoleha
- Сообщения: 298
- Зарегистрирован: 2016.07.10, 19:00
Re: Связи в модулях. API в модулях.
Точно так же как не в модуле. Какая разница для контроллера, который обрабатывает api запросы, где он лежит, в модуле, или нет? Другое дело, что лучше явно прописать роуты в конфиге, например:myks1992@mail.ru писал(а): ↑2019.01.31, 02:21 И второй вопрос как правильно реализовать api в модуле?
Благодарю!
Код: Выделить всё
...
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'POST add-production' => 'api/add/production',
'POST check-create-order' => 'api/add/check-and-create',
'POST check-only' => 'api/add/check-only',
'POST get-literal' => 'api/literal/get',
'POST add-in-literal' => 'api/literal/add',
'POST return-api' => 'api/add/return-api',
],
],
...
'modules' => [
...
'api' => [
'class' => 'app\modules\api\Api',
],
...
],
...
Как бы я написал такой модуль.
1. У модуля свои таблицы, миграции, связи, внутренняя логика.
2. "Наружу торчит" только один класс, например, GetDataService
И в этом классе описаны все методы, например: GetAllCounty(), GetAllRegionForCountry($country_id), GetAllCityForRegion($region_id), GetAllDataForCity($city_id) ...
И, где-то "снаружи", лежит контроллер внешнего приложения, который use GetDataService, и который дергает этот модуль. Например, дай мне всю цепочку по id города: GetAllDataForCity($city_id), и во внешнем приложении, как вы правильно написали, в БД, у вас хранится только этот айдишник.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
-
- Сообщения: 147
- Зарегистрирован: 2017.11.15, 23:54
Re: Связи в модулях. API в модулях.
Благодарю))) Попробую так и сделать!)))))