Browse Source

fix: 智能组件选择题选项里图片的显示问题

过卫栋 3 tuần trước cách đây
mục cha
commit
54edde94f9
1 tập tin đã thay đổi với 23 bổ sung2 xóa
  1. 23 2
      app/Services/MathFormulaProcessor.php

+ 23 - 2
app/Services/MathFormulaProcessor.php

@@ -342,8 +342,13 @@ class MathFormulaProcessor
     public static function processArray(array $data, array $fieldsToProcess): array
     {
         foreach ($data as $key => &$value) {
-            if (in_array($key, $fieldsToProcess) && is_string($value)) {
-                $value = self::processFormulas($value);
+            if (in_array($key, $fieldsToProcess)) {
+                if (is_string($value)) {
+                    $value = self::processFormulas($value);
+                } elseif (is_array($value)) {
+                    // 【修复】当字段在处理列表中且值是数组时(如 options),处理数组中的每个字符串元素
+                    $value = self::processArrayValues($value);
+                }
             } elseif (is_array($value)) {
                 $value = self::processArray($value, $fieldsToProcess);
             }
@@ -351,6 +356,22 @@ class MathFormulaProcessor
         return $data;
     }
 
+    /**
+     * 【新增】递归处理数组中的所有字符串值
+     * 用于处理 options 等数组类型的字段
+     */
+    private static function processArrayValues(array $arr): array
+    {
+        foreach ($arr as $key => &$value) {
+            if (is_string($value)) {
+                $value = self::processFormulas($value);
+            } elseif (is_array($value)) {
+                $value = self::processArrayValues($value);
+            }
+        }
+        return $arr;
+    }
+
     /**
      * 处理题目数据
      */