The followings are the available columns in table 'prop_value':
Inheritance: extends CActiveRecord
コード例 #1
0
ファイル: ItemProp.php プロジェクト: yinhe/yincart
 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')));
 }
コード例 #2
0
ファイル: catalog.php プロジェクト: jackycgq/advanced
    $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>
コード例 #3
0
ファイル: ItemController.php プロジェクト: jackycgq/advanced
 /**
  * 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));
 }
コード例 #4
0
ファイル: view.php プロジェクト: jackycgq/advanced
    $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;
コード例 #5
0
ファイル: ItemProp.php プロジェクト: lhfcainiao/basic
 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);
     }
 }
コード例 #6
0
ファイル: OrderController.php プロジェクト: lhfcainiao/basic
 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);
     }
 }
コード例 #7
0
ファイル: WItemProp.php プロジェクト: lhfcainiao/basic
 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));
 }
コード例 #8
0
 /**
  * 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));
 }
コード例 #9
0
ファイル: Item.php プロジェクト: lhfcainiao/basic
 /**
  * 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;
 }
コード例 #10
0
ファイル: _desc.php プロジェクト: jackycgq/advanced
<?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;
コード例 #11
0
ファイル: _view.php プロジェクト: lhfcainiao/basic
<?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' => '排序'))));
コード例 #12
0
ファイル: ItemProp.php プロジェクト: jackycgq/advanced
 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>';
 }
コード例 #13
0
ファイル: ItemController1.php プロジェクト: yinhe/yincart
 /**
  * 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));
 }