/** * @inheritdoc */ protected function getAdvancedDropDownList($id, $search) { switch ($id) { case 'product_i18n.name': return Html::findAdvancedDropDownListData('kalibao\\common\\models\\product\\ProductI18n', ['product_id', 'name'], [['LIKE', 'name', $search], ['i18n_id' => Yii::$app->language]], 10); break; case 'brand.name': return Html::findAdvancedDropDownListData('kalibao\\common\\models\\brand\\Brand', ['id', 'name'], [['LIKE', 'name', $search]], 10); break; case 'supplier.name': return Html::findAdvancedDropDownListData('kalibao\\common\\models\\supplier\\Supplier', ['id', 'name'], [['LIKE', 'name', $search]], 10); break; case 'variantList': $data = (new ActiveQuery(Variant::className()))->joinWith('productI18ns')->where(['LIKE', 'name', $search])->andWhere(['i18n_id' => Yii::$app->language])->limit(25)->all(); $id = ''; $value = ''; $models = []; foreach ($data as $variant) { $value = $variant->productI18n->name . ' • '; foreach ($variant->variantAttributes as $varAtt) { $attribute = $varAtt->attributeI18n ? $varAtt->attributeI18n->value : $varAtt->attributeI18ns[0]->value; $value .= '<span class=badge>' . $attribute . '</span> '; } $models[] = ['id' => $variant->id, 'value' => $value]; } return Html::activeAdvancedDropDownListData($models, 'id', 'value'); break; default: return []; break; } }
/** * @inheritdoc */ protected function getAdvancedDropDownList($id, $search) { $explode = explode('|', $id); $id = $explode[0]; $attr_type = isset($explode[1]) ? $explode[1] : null; switch ($id) { case 'attribute_type_i18n.value': return Html::findAdvancedDropDownListData('kalibao\\common\\models\\attributeType\\AttributeTypeI18n', ['attribute_type_id', 'value'], [['LIKE', 'value', $search], ['i18n_id' => Yii::$app->language]], 10); break; case 'attribute.value': $models = (new \yii\db\Query())->select(['concat(attribute_id, "|", value)', 'value'])->from('attribute')->leftJoin('attribute_i18n', '`attribute`.`id` = `attribute_i18n`.`attribute_id`')->where(['attribute_type_id' => $attr_type])->andWhere(['LIKE', 'value', $search])->andWhere(['i18n_id' => Yii::$app->language])->limit(10)->all(); $attributeId = ''; $attributeValue = ''; if (!empty($models)) { $keys = array_keys($models[0]); $attributeId = $keys[0]; $attributeValue = isset($keys[1]) ? $keys[1] : $keys[0]; } return Html::activeAdvancedDropDownListData($models, $attributeId, $attributeValue); break; default: return []; break; } }