Добавление категорий при создании и зменении товара

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
werwolf4
Сообщения: 1
Зарегистрирован: 2017.03.24, 12:42

Добавление категорий при создании и зменении товара

Сообщение werwolf4 »

Всем привет.

Я в Yii новичок.
Делаю интернет магазин для изучения Yii.
Столкнулся с такой проблемой:

Есть две таблицы "product" и "cs_product" связаные между собой "categories_product".
Хочу что бы при добавлении и редактировании товара я мог сразу добавить и категории не делая этого в просмотре или еще где то.

Если в actionCreate этот вопрос решается просто передачей в форму модели CategoriesProduct через $categoriesProducts = new CategoriesProduct(); и сохранением с использованием foreach, то в actionUpdate возникает проблема с передачей в форму данных так как и $categoriesProducts = CategoriesProduct::find()->where(['product_id'=>$id])->all(); $model->categoriesProducts отправляют такой массив
array(2) { [0]=> object(common\models\CategoriesProduct)#101 (8) { ["_attributes":"yii\db\BaseActiveRecord":private]=> array(3) { ["id"]=> int(7) ["product_id"]=> int(2) ["category_id"]=> int(1) } ["_oldAttributes":"yii\db\BaseActiveRecord":private]=> array(3) { ["id"]=> int(7) ["product_id"]=> int(2) ["category_id"]=> int(1) } ["_related":"yii\db\BaseActiveRecord":private]=> array(0) { } ["_errors":"yii\base\Model":private]=> NULL ["_validators":"yii\base\Model":private]=> NULL ["_scenario":"yii\base\Model":private]=> string(7) "default" ["_events":"yii\base\Component":private]=> array(0) { } ["_behaviors":"yii\base\Component":private]=> array(0) { } } [1]=> object(common\models\CategoriesProduct)#106 (8) { ["_attributes":"yii\db\BaseActiveRecord":private]=> array(3) { ["id"]=> int(8) ["product_id"]=> int(2) ["category_id"]=> int(2) } ["_oldAttributes":"yii\db\BaseActiveRecord":private]=> array(3) { ["id"]=> int(8) ["product_id"]=> int(2) ["category_id"]=> int(2) } ["_related":"yii\db\BaseActiveRecord":private]=> array(0) { } ["_errors":"yii\base\Model":private]=> NULL ["_validators":"yii\base\Model":private]=> NULL ["_scenario":"yii\base\Model":private]=> string(7) "default" ["_events":"yii\base\Component":private]=> array(0) { } ["_behaviors":"yii\base\Component":private]=> array(0) { } } }
а мне нужен просто массив ["category_id"] для вывода его в

Код: Выделить всё

<?= Chosen::widget([
            'items' => ArrayHelper::map(Category::find()->all(), 'id', 'name'),
            'disableSearch' => 5, 
            'clientOptions' => [
                'search_contains' => true,
                'single_backstroke_delete' => false,
            ],
            'multiple' => true,
            'model'=>$model,
            'attribute'=>'categoriesProducts'

        ]);
        ?>
или модель с списком выбранных категорий для такой вывода

Код: Выделить всё

<?= Chosen::widget([
            'items' => ArrayHelper::map(Category::find()->all(), 'id', 'name'),
            'disableSearch' => 5, // Search input will be disabled while there are fewer than 5 items
            'clientOptions' => [
                'search_contains' => true,
                'single_backstroke_delete' => false,
            ],
            'multiple' => true,
            'model'=>$categoriesProducts,
            'attribute'=>'category_id'

        ]);
        ?>
        
Подскажите как правильно выбрать нужные мне данные.

Заранее спасибо.
Ответить