rabin 6 years ago
parent
commit
b92288218e
2 changed files with 51 additions and 15 deletions
  1. 2 2
      database/info.php
  2. 49 13
      src/Api.php

+ 2 - 2
database/info.php

@@ -123,11 +123,11 @@ return array
 		'ename'		=> array
 		(
 			'type' 		=> 'varchar-150',
-			'name' 		=> '英文名称-设置之后,获取该属性的值时,将使用该值作为标识,请勿随意更改',
+			'name' 		=> '英文标识-该标识一般为前端样式名称',
 			'default' 	=> '',
 			'desc' 		=> '英文名称',
 			'match' 	=> 'is_string',
-			//'update'	=> 'option',
+			'update'	=> 'option',
 			//'search'	=> 'fulltext',
 			//'list'		=> true,
 			//'edit'		=> true,

+ 49 - 13
src/Api.php

@@ -168,7 +168,7 @@ class Api
 				}
 
 				if ($v['value']) {
-					$config['struct'][$k]['default'] = $v['value'];
+					//$config['struct'][$k]['default'] = $v['value'];
 				}
 
 				if ($v['state'] == 2) {
@@ -223,7 +223,7 @@ class Api
      *
      * @return mixed
      */
-    public function string($ids, $value)
+    public function string($ids, $value = '')
     {
         $result = $this->getInfo($ids, $value);
 
@@ -243,30 +243,66 @@ class Api
      *
      * @return mixed
      */
-    public function getSearch($ids, $cate = true)
+    public function getSearch($ids, $cate = true, $city = false, $search_value = false)
     {
+        $value = array();
+        $search_value = Dever::preInput('attr_', $search_value);
+
     	if ($cate && Dever::project('category')) {
-    		$attr_where['category'] = $ids;
+    		$attr_where['category'] = Dever::defaultValue($ids);
     		$attr = Dever::db('category/attr')->getAttr($attr_where);
     		if ($attr) {
-    			$value = array();
+                $ids = $ids_input = array();
     			foreach ($attr as $k => $v) {
-    				$value = array_merge($value, explode(',', $v['attr']));
+                    $v['attr'] = explode(',', $v['attr']);
+                    $v['attr_input'] = explode(',', $v['attr_input']);
+                    foreach ($v['attr'] as $k1 => $v1) {
+                        $ids[$v1] = $v1;
+                        if (isset($v['attr_input'][$k1])) {
+                            $ids_input[$v1] = $v['attr_input'][$k1];
+                        }
+                    }
     			}
-    			$ids = array_unique($value);
+    			$ids = array_keys($ids);
     		}
-    		print_r($ids);die;
     	}
     	$where['ids'] = $ids;
     	$where['search_reorder'] = 1;
         $data = Dever::db('attr/info')->getSearch($where);
 
-        print_r($data);die;
-        $table = array();
-        foreach ($data as $k => $v) {
-        	
+        if ($data) {
+            foreach ($data as $k => $v) {
+                if (isset($ids_input[$v['id']]) && $ids_input[$v['id']]) {
+                    $data[$k]['name'] = $ids_input[$v['id']];
+                }
+                $data[$k]['key'] = 'attr_' . $v['id'];
+                if ($v['type'] == 7 && $city > 0) {
+                    # 获取地区,获取最后一个级别的地区
+                    $data[$k]['option'] = Dever::db('area/county')->state(array('city_id' => $city));
+                } elseif ($v['type_option']) {
+                    $temp = explode("\n", $v['type_option']);
+                    foreach ($temp as $k1 => $v1) {
+                        $v1 = explode(',', $v1);
+                        $k1 = $k1+1;
+                        $data[$k]['option'][$k1] = array
+                        (
+                            'id' => $k1,
+                            'name' => $v1[0],
+                        );
+                        if (isset($v1[1])) {
+                            $data[$k]['option_match'][$k1] = $v1[1];
+                        }
+                    }
+                }
+
+                if (isset($search_value[$data[$k]['key']])) {
+                    $data[$k]['option_value'] = $search_value[$data[$k]['key']];
+                    $value[$data[$k]['key']] = $data[$k]['option_value'];
+                }
+            }
         }
+        
 
-		return Dever::table($table);
+		return array('search' => $data, 'value' => $value);
     }
 }