public function getDisplayAttributeAssignmentPairs() { $displayPairs = []; foreach ($this->attributeAssignments as $attributeAssignment) { $productAttribute = ProductAttribute::findOne($attributeAssignment['attribute_id']); $displayPairs[$productAttribute->name] = $attributeAssignment['attribute_option']; } return $displayPairs; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = ProductAttribute::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'category_id' => $this->category_id, 'type' => $this->type, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'status' => $this->status]); $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'option', $this->option]); return $dataProvider; }
public function actionAddToCart() { $productId = Yii::$app->request->post('productId', false); $quantity = abs((int) Yii::$app->request->post('quantity', false)); $attributeAssignments = []; foreach (Yii::$app->request->post('attributeAssignments', []) as $attributeAssignment) { $attributeId = ArrayHelper::getValue($attributeAssignment, 'attributeId'); $attributeOption = trim(ArrayHelper::getValue($attributeAssignment, 'attributeOption')); $productAttribute = ProductAttribute::findOne($attributeId); if (!$productAttribute->isValidOption($attributeOption)) { continue; } $attributeAssignments[] = ['attribute_id' => $attributeId, 'attribute_option' => $attributeOption]; } $productInCart = ProductInCart::findOne($productId); $productInCart->attributeAssignments = $attributeAssignments; if ($productInCart) { Yii::$app->cart->put($productInCart, $quantity); return ['status' => self::STATUS_SUCCESS, 'message' => Yii::t('app', 'Add Success.')]; } else { throw new HttpException(Yii::t('app', 'Please try again later.')); } }
public function getAttributeCategory() { return ProductAttributeCategory::softFind()->select('product_attribute_category.*')->leftJoin(ProductAttribute::tableName(), '`product_attribute_category`.`id` = `product_attribute`.`category_id`')->leftJoin(ProductAttributeAssignment::tableName(), '`product_attribute_assignment`.`attribute_id` = `product_attribute`.`id`')->leftJoin(static::tableName(), '`product`.`id` = `product_attribute_assignment`.`product_id`')->where(['product.id' => $this->id]); }
public function getSubAttributes() { return $this->hasMany(ProductAttribute::className(), ['category_id' => 'id']); }
/** * Finds the ProductAttribute model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return ProductAttribute the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = ProductAttribute::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
<div class="product-attribute-form"> <?php $form = ActiveForm::begin(['layout' => 'horizontal']); ?> <?php echo $form->field($model, 'category_id')->dropDownList(ArrayHelper::map(ProductAttributeCategory::getList(), 'id', 'name')); ?> <?php echo $form->field($model, 'name')->textInput(['maxlength' => true]); ?> <?php echo $form->field($model, 'type')->dropDownList(ProductAttribute::getTypeLabels()); ?> <?php echo $form->field($model, 'option')->textInput(['maxlength' => true]); ?> <?php echo $form->field($model, 'status')->dropDownList(ActiveRecord::getStatusLabels()); ?> <div class="form-group"> <div class="col-sm-offset-3 col-sm-6"> <?php echo Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-block btn-success' : 'btn btn-block btn-primary']); ?>
public function getBelongAttribute() { return $this->hasOne(ProductAttribute::className(), ['id' => 'attribute_id']); }
echo $product->name; ?> </li> <li><span>商品编号:</span><?php echo $product->id; ?> </li> <li><span>上架时间:</span><?php echo Yii::$app->formatter->asDate($product->created_at); ?> </li> <?php foreach ($product->attributeAssignmentsAttributeIdMap as $attributeId => $attributeAssignments) { ?> <?php $productAttribute = ProductAttribute::findOne($attributeId); ?> <?php if (!$productAttribute || $productAttribute->isMultiple) { continue; } ?> <li><span><?php echo $productAttribute->name; ?> :</span><?php echo reset($attributeAssignments)->attribute_option; ?> </li> <?php }