public static function getAddressList() { /** @var \yii\web\user $customer */ $customer = Yii::$app->user->identity; $deliveryAddresses = DeliveryAddress::find()->where(['user_id' => $customer->id])->all(); $addressList = array_map(function ($address) { /** @var \home\modules\member\models\DeliveryAddress $address */ $addressInfo = [$address->provinceArea->name . $address->cityArea->name . $address->districtArea->name . $address->address, $address->zip_code, $address->name, $address->phone]; $addressInfo = implode(' ', $addressInfo); return $addressInfo; }, $deliveryAddresses); $defaultAddress = array_filter($deliveryAddresses, function ($address) { /** @var \home\modules\member\models\DeliveryAddress $address */ return $address->is_default; }); if (!empty($defaultAddress)) { $defaultKey = array_keys($defaultAddress)[0]; $defaultAddress = $addressList[$defaultKey]; } return [array_combine($addressList, $addressList), $defaultAddress]; }
/** * find member's address * @author Cangzhou Wu<*****@*****.**> * @return string */ public function actionDeliveryAddress() { $model = new DeliveryAddress(); $dataProvider = new ActiveDataProvider(['query' => $model::find()->where(['user_id' => Yii::$app->user->id])]); //view if (Yii::$app->request->get('view_id')) { $model = $model->find()->where(['delivery_address_id' => Yii::$app->request->get('view_id'), 'user_id' => Yii::$app->user->id])->one(); } //create and update if ($model->load(Yii::$app->request->post())) { $deliveryAddress = Yii::$app->request->post('DeliveryAddress'); $deliveryAddress['user_id'] = Yii::$app->user->id; $model->user_id = Yii::$app->user->id; //prevent causing multiple submissions when F5 to refresh the page if (!DeliveryAddress::find()->where($deliveryAddress)->all()) { /** * ensure only one default deliveryAddress */ if ($model->is_default == 1) { $deliveryAddress = DeliveryAddress::find()->where(['is_default' => 1, 'user_id' => Yii::$app->user->id])->all(); foreach ($deliveryAddress as $address) { $address->is_default = 0; $address->save(); } } if ($model->save()) { if (Yii::$app->request->get('view_id')) { $this->redirect(['address/delivery-address']); } } } } $area = Area::find()->where(['parent_id' => 100000])->all(); $catList = []; foreach ($area as $s) { $catList[$s->area_id] = $s->name; } return $this->render('delivery_address', ['model' => $model, 'catList' => $catList, 'dataProvider' => $dataProvider]); }
<h2 class="main-heading text-center"> 结算 </h2> <!-- Main Heading Ends --> <form> <div class="breadcrumb address-panel"> <div class="box-title container_24"><span style="float:right"><?php echo Html::a('管理收货地址', array('/member/address/delivery-address'), array('target' => '_blank')); ?> </span>收货地址 </div> <div class="box-content"> <?php list($addressList, $defaultAddress) = \star\member\models\DeliveryAddress::getAddressList(); ?> <?php echo Html::dropDownList('address', $defaultAddress, $addressList); ?> </div> </div> <div class="breadcrumb"> <div class="box-title container_24">支付方式</div> <div class="box-content" style="vertical-align:middle;"> <?php $payment = Yii::createObject(\star\payment\models\Payment::className()); echo Html::radioList('payment', [$payment::ALIPAY], $payment->getPayList()); ?> </div>
/** * Finds the customerAddress model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return customerAddress the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findDeliveryAddressModel($id) { $model = Yii::createObject(DeliveryAddress::className()); if (($model = $model::findOne($id)) !== null) { return $model; } else { throw new yii\web\NotFoundHttpException('The requested page does not exist.'); } }
<?php use kartik\widgets\DepDrop; use yii\helpers\Url; use yii\helpers\Html; use yii\grid\GridView; use star\member\models\DeliveryAddress; $dataList = ['1' => '是', '0' => '否']; $this->params['breadcrumbs'][] = ['label' => Yii::t('member', 'Member Center'), 'url' => ['/member/default/index']]; $this->params['breadcrumbs'][] = '收货地址'; $this->params['delivery-address'] = true; $link = $this->getAssetManager()->getPublishedUrl('@theme/cluster/default/assets'); $this->registerJsFile($link . '/js/address.js', ['depends' => [\yii\web\JqueryAsset::className()]]); $count = DeliveryAddress::find()->where(['user_id' => Yii::$app->user->id])->count(); if ($count == 0) { echo '您还没有创建收货地址! 请填写以下信息并保存:<br /><br />'; } else { ?> <span id="item" style="margin-left: 0px">已保存有效的地址:</span> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'name:text:收货人', 'provinceArea.name:text:省', 'cityArea.name:text:市', 'districtArea.name:text:区', 'address:text:详细地址', 'zip_code', 'phone', ['attribute' => 'is_default', 'value' => function ($model) { $dataList = ['1' => '是', '0' => '否']; return $dataList[$model->is_default]; }], ['class' => 'yii\\grid\\ActionColumn', "buttons" => ['view' => function ($url, $model) { return; }, 'update' => function ($url, $model) { return Html::a('<span class="glyphicon glyphicon-pencil"></span>', ['address/delivery-address', 'view_id' => $model->delivery_address_id]); }]]]]); } //index view