Динамическая подгрузка
loveorigami opened this issue · 6 comments
Понадобилось сейчас сделать привязку атрибутов при смене категории.
- Отправляется post - запрос на action
- Там я нахожу необходимые сеты и формирую Entity.
- И... все )
Т.к. вывод eav-полей завязан только на поведении и никак нельзя их вывести без привязки к модели.
Было бы очень удобно вытягивать поля динамически.
Например - тут
https://github.com/nurbeknurjanov/yii2ecommerce/blob/master/modules/eav/controllers/DynamicFieldController.php#L81
Демо - https://backend.sakuracommerce.com/product/product/update?id=1
Может, для этого нужно сделать отдельный виджет?
На сколько я понял, в вашем примере атрибуты связаны с категориями.
У нас такой привязки нет.
Думаю, что виджет можно сделать, но не в рамках текущего пакета.
Ну у меня категория в свою очередь, связана с сетом. При создании или редактировании категории я назначаю товару тот или иной сет.
Данный вопрос пересекается с виджетом для поиска. Разные категории связаны с разными сетами. На фронте нужно вывести форму с eav атрибутами в соответсвующей категории. Как в большинстве магазинов.
Почему не добавить такой виджет сюда в пакет? Для админки тут все есть. А для фронта нет поисковой формы по атрибутам.
Тогда бы это был полноценный пакет.
В этом пакете нет категорий, я могу вам помочь сделать такой виджет, если с этим проблема.
Но это будет не в рамках этого пакета.
Не в категориях дело. В доке
If you need some dynamic configuration sets of your model you can use method afterFind():
public function afterFind()
{
$this->attachBehavior('eav', [
'class' => Entity::class,
'entity' => function () {
$setIds = $this->getCategories()->select('set_id')->column();
$setIds[] = Set::findOne(['code' => 'product'])->id;
return new EntityModel([
'sets' => Set::findAll(['id' => array_unique($setIds)]),
]);
},
]);
parent::afterFind();
}
Но для фронта с таким кейсом дополнительно в пакете ничего нет.
Как будут связаны сеты с продуктами, через категории (один к одному, один ко многим или напрямую) это дело разработчика.
Для ясности - пусть продукт напрямую связан с сетом.
Допустим, у меня есть следующие сеты
- Tv
- Mobile
И связь продукта напрямую с сетами product_id -> set_id
==============
На фронте находясь в продукте SamsungMobile я хочу показать форму с параметрами из сета mobile, чтоб отфильтровать другие телефоны по заданному критерию.
Написать виджет я и сам могу, просто думал, логичнее, чтобы все было в одном пакете.
Набор виджетов для админки
- Поведение для модели
- Виджеты для грида
- Виджет формы для searchModel
Если с кодом проблем нет, буду рад увидеть PR)