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.'));
     }
 }
Exemple #4
0
 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.');
     }
 }
Exemple #7
0
<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']);
 }
Exemple #9
0
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 
}