public function getPropCheckBoxListValues($label = '', $selected = '') { $cri = new CDbCriteria(array('condition' => 'prop_id =' . $this->prop_id, 'order' => 'sort_order asc, value_id asc')); $PropValues = PropValue::model()->findAll($cri); $list = CHtml::listData($PropValues, 'value_id', 'value_name'); echo CHtml::checkBoxList('Item[props][' . $this->prop_id . ']', $selected, $list, array('label' => $label, 'separator' => '', 'labelOptions' => array('class' => 'labelForRadio'))); }
$props = ItemProp::model()->findAll($cri); foreach ($props as $p) { ?> <!-- <?php echo $p->prop_name; ?> --> <dl class="clearfix"> <dt><span class="filter_list_tit"><?php echo $p->prop_name; ?> :</span></dt> <dd><div><a><span>全部</span></a></div></dd> <?php $cri = new CDbCriteria(array('condition' => 'prop_id =' . $p->prop_id)); $values = PropValue::model()->findAll($cri); foreach ($values as $v) { ?> <dd><div><a><span><?php echo $v->value_name; ?> </span></a></div></dd> <?php } ?> </dl> <?php } ?> <!-- <div class="reset"> <div><a onclick="javascript:RetSelecteds();">重置所有筛选条件</a></div>
/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { Yii::import("xupload.models.XUploadForm"); $upload = new XUploadForm(); $model = $this->loadModel($id); $model->scenario = 'update'; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); $action = 'item'; if (isset($_POST['Item'])) { $model->attributes = $_POST['Item']; if ($_POST['Item']['props']) { foreach ($_POST['Item']['props'] as $key => $value) { $p = ItemProp::model()->findByPk($key); if ($p->type == 'multiCheck') { $values = implode($value, ','); $p_arr[] = $key . ':' . $values; foreach ($value as $kk => $vv) { $v = PropValue::model()->findByPk($vv); $value_name[] = $v->value_name; } $value_names = implode($value_name, ','); $v_arr[] = $p->prop_name . ':' . $value_names; } elseif ($p->type == 'optional') { $p_arr[] = $key . ':' . $value; $v = PropValue::model()->findByPk($value); $v_arr[] = $p->prop_name . ':' . $v->value_name; } elseif ($p->type == 'input') { //如果是文本框输入的话 不纳入搜索 //也就不纳入到props里 只保存到prop_names里 $p_arr[] = $key . ':' . $value; $v_arr[] = $p->prop_name . ':' . $value; } } $props = implode($p_arr, ';'); $model->props = $props; $props_name = implode($v_arr, ';'); $model->props_name = $props_name; } if ($model->save()) { if (isset($_POST['ItemImg']) && count($_POST['ItemImg'])) { foreach ($_POST['ItemImg'] as $k1 => $v1) { $model = ItemImg::model()->find('img_id = :img_id', array(':img_id' => $v1)); $model->position = $k1; $model->save(); } } $this->redirect(array('view', 'id' => $model->item_id)); } } $this->render('update', array('model' => $model, 'upload' => $upload)); }
$count = count($props); for ($i = 0; $i < $count; $i++) { $p[$i][] = $props[$i]; } } for ($i = 0; $i < $count; $i++) { foreach (array_unique($p[$i]) as $k => $v) { $new_v = explode(':', $v); $new_arr[$new_v[0]][] = $new_v[1]; } } foreach ($new_arr as $k => $v) { $list = ItemProp::model()->findByPk($k); echo $list->prop_name . ': '; foreach ($v as $v) { $v_list = PropValue::model()->findByPk($v); echo $v_list->value_name . ' '; } echo '<br />'; } /** * 计算 */ // foreach($sku_list as $skus) { // $arr[$skus] // } ?> <li> <div style='width:150px;margin:0'>我要订购:<input type="number" value="<?php echo $model->min_number;
public function setPropValues($PropValues) { if (is_array($PropValues['value_name']) && count($PropValues['value_name'])) { $count = count($PropValues['value_name']); for ($i = 0; $i < $count; $i++) { $model = empty($PropValues['value_id'][$i]) ? new PropValue() : PropValue::model()->findByPk($PropValues['value_id'][$i]); $model->prop_id = $this->prop_id; $model->value_name = $PropValues['value_name'][$i]; // $model->category_id = $PropValues['category_id'][$i]; $model->sort_order = $i; $model->save(); $PropValues['value_id'][$i] = $model->value_id; } //删除 $models = PropValue::model()->findAll('prop_id = ' . $this->prop_id); $delArr = array(); foreach ($models as $k1 => $v1) { if (!in_array($v1->value_id, $PropValues['value_id'])) { $delArr[] = $v1->value_id; } } if (count($delArr)) { PropValue::model()->deleteAll('value_id IN (' . implode(', ', $delArr) . ')'); } } else { //已经没有属性了,要清除数据表内容 PropValue::model()->deleteAll('prop_id = ' . $this->prop_id); } }
public function actionSelectProp() { $select_id = $_GET['selectItem']; $items = Sku::model()->findAll(new CDbCriteria(array('condition' => "item_id='{$select_id}'"))); foreach ($items as $key => $item) { $list[$key]['sku_id'] = $item->sku_id; $props = json_decode($item->props, true); $pro = ''; foreach ($props as $prop) { $values = explode(':', $prop); $itemProp = ItemProp::model()->findByPk($values[0]); $propValue = PropValue::model()->findByPk($values[1]); $pro .= "{$itemProp->prop_name}:{$propValue->value_name}" . ' '; } $list[$key]['prop'] = $pro; } echo CHtml::tag("option", array("value" => ''), CHtml::encode('请选择'), true); foreach ($list as $item) { echo CHtml::tag("option", array("value" => $item['sku_id']), CHtml::encode($item['prop']), true); } }
public function run() { $props = CJSON::decode($this->item->props); empty($props) && ($props = array()); $prop_data = array(); foreach ($props as $k => $v) { $item_prop = ItemProp::model()->findByPk($k); if (!$item_prop) { continue; } switch ($item_prop->type) { case 'input': $prop_value_name = $v; break; case 'optional': $prop_value = PropValue::model()->findByPk($v); if (!$prop_value) { continue; } $prop_value_name = $prop_value->value_name; break; case 'multiCheck': if (!is_array($v)) { continue; } $cri = new CDbCriteria(); $cri->addInCondition('value_id', $v); $cri->select = 'value_name'; $prop_values = PropValue::model()->findAll($cri); $prop_value_name = ''; foreach ($prop_values as $prop_value) { $prop_value_name .= ' ' . $prop_value->value_name; } $prop_value_name = substr($prop_value_name, 1); break; } $prop_data[$item_prop->prop_name] = $prop_value_name; } if ($this->showSku) { $skus = CJSON::decode($this->item->skus); if (!empty($skus['checkbox'])) { foreach ($skus['checkbox'] as $k => $v) { if (!is_array($v)) { continue; } $item_prop = ItemProp::model()->findByPk($k); if (!$item_prop) { continue; } $vids = array(); foreach ($v as $kk => $vv) { $ids = explode(':', $vv); if (!empty($ids[1])) { $vids[$kk] = $ids[1]; } } if (empty($vids)) { continue; } $cri = new CDbCriteria(); $cri->addInCondition('value_id', $vids); $cri->select = 'value_id, value_name'; $prop_values = PropValue::model()->findAll($cri); $prop_value_names = array(); $vids = array_flip($vids); foreach ($prop_values as $prop_value) { $prop_value_names[$vids[$prop_value->value_id]] = $prop_value->value_name; } $prop_data[$item_prop->prop_name] = implode(' ', $prop_value_names); } } } $this->render('itemProp', array('prop_data' => $prop_data)); }
/** * format item prop data to json format from post * @param $itemProps * @return array * @author Lujie.Zhou(gao_lujie@live.cn, qq:821293064). */ protected function handleItemProps($itemProps) { $props = array(); $props_name = array(); foreach ($itemProps as $pid => $vid) { $itemProp = ItemProp::model()->findByPk($pid); $pname = $itemProp->prop_name; if (is_array($vid)) { $props[$pid] = array(); $props_name[$pname] = array(); foreach ($vid as $v) { $props[$pid][] = $pid . ':' . $v; $propValue = PropValue::model()->findByPk($v); $vname = $propValue ? $propValue->value_name : $v; $props_name[$pname][] = $pname . ':' . $vname; } } else { $props[$pid] = $pid . ':' . $vid; $propValue = PropValue::model()->findByPk($vid); $vname = $propValue ? $propValue->value_name : $vid; $props_name[$pname] = $pname . ':' . $vname; } } return array(json_encode($props), json_encode($props_name)); }
/** * get props values combine * @param $arr * @return string * @author Lonely(qq:81106404) */ public static function get_props_values_combine($arr) { $op = ItemProp::model()->findByPk($arr[0]); $opv = PropValue::model()->findByPk($arr[1]); $data = $arr[0] . ":" . $arr[1] . ":" . F::strip_prop_strto_csv($op->prop_name) . ":" . F::strip_prop_strto_csv($opv->value_name); return $data; }
<?php $props = CJSON::decode($model->props, TRUE); //print_r($props); echo '<div class="item-props"><ul>'; foreach ($props as $k => $v) { $p_list = ItemProp::model()->findByPk($k); if ($p_list->type == 'optional') { $new_v = explode(':', $v); $new_value = $new_v[1]; $v_list = PropValue::model()->findByPk($new_value); echo '<li class="col-span-3">' . $p_list->prop_name . ':' . $v_list->value_name . '</li>'; } elseif ($p_list->type == 'input') { echo '<li class="col-span-3">' . $p_list->prop_name . ':' . $v . '</li>'; } elseif ($p_list->type == 'multiCheck') { echo '<li class="col-span-3">' . $p_list->prop_name . ':'; foreach ($v as $key => $value) { $new_v = explode(':', $value); $new_value = $new_v[1]; $v_list = PropValue::model()->findByPk($new_value); echo $v_list->value_name . ','; } echo '</li>'; } } echo '</ul></div>'; echo '<div class="clearfix"></div>'; echo $model->desc;
<?php /** * Created by PhpStorm. * author: shuai.du@jago-ag.cn * Date: 3/6/14 * Time: 2:47 PM */ $data = Category::model()->findAllByAttributes(array('category_id' => $model->category_id)); $propValues = PropValue::model()->findAllByAttributes(array('prop_id' => $model->prop_id)); $propstr = ''; foreach ($propValues as $propvalue) { $propstr .= $propvalue->value_alias . '; '; } $this->widget('bootstrap.widgets.TbDetailView', array('data' => $model, 'attributes' => array(array('name' => Yii::t('backend', '分类'), 'value' => $data[0]['name']), array('name' => '属性值', 'value' => $propstr), array('name' => 'prop_name', 'label' => Yii::t('backend', '属性名')), array('name' => 'prop_alias', 'label' => Yii::t('backend', '属性别名')), array('name' => Yii::t('backend', '属性类型'), 'value' => $model->getType()), array('name' => Yii::t('backend', '是否关键属性'), 'value' => $model->getKey()), array('name' => Yii::t('backend', '是否销售属性'), 'value' => $model->getSale()), array('name' => Yii::t('backend', '是否颜色属性'), 'value' => $model->getColor()), array('name' => Yii::t('backend', '是否必选'), 'value' => $model->getMust()), array('name' => Yii::t('backend', '状态'), 'value' => $model->getStatus()), array('name' => 'sort_order', 'label' => '排序'))));
public function getPropCheckBoxListValues($label = '', $selected = '', $class = '', $type = 'props', $child_type = '') { $cri = new CDbCriteria(array('condition' => 'prop_id =' . $this->prop_id, 'order' => 'sort_order asc, value_id asc')); $PropValues = PropValue::model()->findAll($cri); $list = CHtml::listData($PropValues, 'value_id', 'value_name'); foreach ($list as $k => $v) { $data[$this->prop_id . ':' . $k] = $v; } echo '<ul class="sku-list">'; if ($child_type) { echo CHtml::checkBoxList('Item[' . $type . '][' . $child_type . '][' . $this->prop_id . ']', $selected, $data, array('template' => '<label class="checkbox inline">{input}{label}</label>', 'label' => $label, 'separator' => '', 'class' => $class, 'labelOptions' => array('class' => 'labelForRadio'))); } else { echo CHtml::checkBoxList('Item[' . $type . '][' . $this->prop_id . ']', $selected, $data, array('template' => '<label class="checkbox inline">{input}{label}</label>', 'label' => $label, 'separator' => '', 'class' => $class, 'labelOptions' => array('class' => 'labelForRadio'))); } echo '</ul>'; }
/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model = $this->loadModel($id); $model->scenario = 'update'; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); $img = new ItemImg('update'); $action = 'item'; if (isset($_POST['Item'])) { $model->attributes = $_POST['Item']; if ($_POST['Item']['props']) { foreach ($_POST['Item']['props'] as $key => $value) { $p = ItemProp::model()->findByPk($key); if ($p->type == 'multiCheck') { $values = implode($value, ','); $p_arr[] = $key . ':' . $values; foreach ($value as $kk => $vv) { $v = PropValue::model()->findByPk($vv); $value_name[] = $v->value_name; } $value_names = implode($value_name, ','); $v_arr[] = $p->prop_name . ':' . $value_names; } elseif ($p->type == 'optional') { $p_arr[] = $key . ':' . $value; $v = PropValue::model()->findByPk($value); $v_arr[] = $p->prop_name . ':' . $v->value_name; } elseif ($p->type == 'input') { //如果是文本框输入的话 不纳入搜索 //也就不纳入到props里 只保存到prop_names里 $p_arr[] = $key . ':' . $value; $v_arr[] = $p->prop_name . ':' . $value; } } $props = implode($p_arr, ';'); $model->props = $props; $props_name = implode($v_arr, ';'); $model->props_name = $props_name; } if ($model->validate() && $img->validate()) { if ($model->save()) { if ($_POST['ItemImg']) { for ($i = 0; $i <= 4; $i++) { $img->isNewRecord = true; $img->attributes = $_POST['ItemImg']; $img->item_id = $model->item_id; $img->position = $i; $img->create_time = time(); // file handling $imageUploadFile = CUploadedFile::getInstance($img, 'url' . $i); if ($imageUploadFile !== null) { // only do if file is really uploaded $cri = new CDbCriteria(array('condition' => 'item_id = ' . $id . ' and position = ' . $i)); $images = ItemImg::model()->find($cri); $old_image = dirname(Yii::app()->basePath) . '/upload/' . $action . '/' . 'image' . '/' . $images->url; if (file_exists($old_image)) { @unlink($old_image); ItemImg::model()->deleteAllByAttributes(array("item_id" => $id), "position=:position", array(":position" => $i)); } $imageFileExt = $imageUploadFile->extensionName; $save_path = dirname(Yii::app()->basePath) . '/upload/' . $action . '/image/'; if (!file_exists($save_path)) { mkdir($save_path, 0777, true); } $ymd = date("Ymd"); $save_path .= $ymd . '/'; if (!file_exists($save_path)) { mkdir($save_path, 0777, true); } $img_prefix = date("YmdHis") . '_' . rand(10000, 99999); $imageFileName = $img_prefix . '.' . $imageFileExt; $img->url = $ymd . '/' . $imageFileName; $save_path .= $imageFileName; $img->save(); $imageUploadFile->saveAs($save_path); } else { $img->url = $img->url; } } } $this->redirect(array('view', 'id' => $model->item_id)); } } } $this->render('update', array('model' => $model, 'img' => $img)); }