Просмотр исходного кода

修复组合数据 索引为空bug

sugar1569 6 лет назад
Родитель
Сommit
45c51f0719
1 измененных файлов с 29 добавлено и 3 удалено
  1. 29 3
      application/admin/model/system/SystemGroupData.php

+ 29 - 3
application/admin/model/system/SystemGroupData.php

@@ -75,12 +75,14 @@ class SystemGroupData extends ModelBasic
         $data = [];
         $result = $model->select();
         if(!$result) return $data;
+        $result = $result->toArray();
         foreach ($result as $key => $value) {
             $data[$key]["id"] = $value["id"];
             $fields = json_decode($value["value"],true);
             foreach ($fields as $index => $field) {
-//                $data[$key][$index] = $field['type'] == 'upload' ? (isset($field["value"][0]) ? $field["value"][0]: ''):$field["value"];
-                $data[$key][$index] = $field["value"];
+                if($field['type'] === 'radio') {
+                    $data[$key][$index] = self::getGroupRadioValue($value['gid'],$field["value"]);
+                }else $data[$key][$index] = $field["value"];
             }
         }
         return $data;
@@ -111,8 +113,32 @@ class SystemGroupData extends ModelBasic
         $data["id"] = $value["id"];
         $fields = json_decode($value["value"],true);
         foreach ($fields as $index => $field) {
-            $data[$index] = $field["value"];
+            if($field['type'] === 'radio') {
+                $data[$index] = self::getGroupRadioValue($value['gid'],$field["value"]);
+            }else $data[$index] = $field["value"];
         }
         return $data;
     }
+
+    /**
+     * TODO radio 根据值获取参数
+     * @param $id
+     * @param $value
+     * @return mixed
+     */
+    public static function getGroupRadioValue($id,$value){
+        $groupData = SystemGroup::getField($id);
+        foreach ($groupData['fields'] as $key=>&$item){
+           if($item['type'] == 'radio'){
+               $params = explode("\n",$item["param"]);
+               if(is_array($params) && !empty($params)){
+                   foreach ($params as $index => &$v) {
+                       $vl = explode('=>',$v);
+                       if(isset($vl[0]) && isset($vl[1]) && count($vl) && $vl[1] === $value) return $vl[0];
+                   }
+               }
+           }
+        }
+        return $value;
+    }
 }