pistol88 / yii2-relations
Модуль позволяет привязывать любые модели к любым моделям (пример - похожие товары и т.д.)
Installs: 385
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 4
Open Issues: 0
Type:yii2-extension
Requires
- php: >=5.4.0
- kartik-v/yii2-widget-fileinput: *
- newerton/yii2-fancybox: dev-master
- yiisoft/yii2: *
- yiisoft/yii2-bootstrap: *
This package is auto-updated.
Last update: 2024-10-27 21:51:52 UTC
README
Модуль дает возможность быстро добавить возможность связывать модели между собой. Пример использования: привязка похожих продуктов.
Установка
Выполнить команду
php composer require pistol88/yii2-relations "*"
Или добавить в composer.json
"pistol88/yii2-relations": "*",
И выполнить
php composer update
Подключение и настройка
В конфигурационный файл приложения добавить модуль relations
'modules' => [ //.. 'relations' => [ 'class' => 'pistol88\relations\Module', 'fields' => ['code'], ], //.. ]
*fields - массив доп. полей (по умолчанию в окне выбора показываются только id и название)
Использование
Связи хранятся в отдельном поле (TEXT) в виде сериализованного массива, поле нужно создать и добавить в модели. К модели, которая имплементирует \pistol88\relations\interfaces\Torelate и наследует AR, подключить поведение:
function behaviors() { return [ 'relations' => [ 'class' => 'pistol88\relations\behaviors\AttachRelations', 'relatedModel' => 'common\models\Product', 'inAttribute' => 'relations', ], ]; } public function getName() { return $this->name; } public function getId() { return $this->id; }
- inAttribute - название поля модели, где будут храниться связи
- relatedModel - модель, элементы которой нужно привязывать
Теперь привязанные модели будет возвращаеть метод $model->getRelations()->all().
Виджеты
Выбор подключаемых моделей осуществляется через виджет:
<?=\pistol88\relations\widgets\Constructor::widget(['model' => $model]);?>
Его необходимо вызвать внутри формы редактирования вашей модели.