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

fix(api-v13): showPara 系统原文channel追加顺序导致编辑模式丢失译文channel

showPara 把系统原文channel放在channels数组开头,而 makeContentObj 用
array_pop 剔除末尾元素(约定系统channel在末尾),导致段落节点 channels
字段丢掉最后一个请求的channel。前端编辑模式按节点 channels 重新取数,
译文channel(如译文二)因此不显示占位。改为与 showChapter 等其他入口
一致:请求channels在前,系统channel追加在末尾,并补充 UUID 过滤。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
visuddhinanda 2 дней назад
Родитель
Сommit
a75cf6f7ac
1 измененных файлов с 14 добавлено и 9 удалено
  1. 14 9
      api-v13/app/Http/Controllers/CorpusController.php

+ 14 - 9
api-v13/app/Http/Controllers/CorpusController.php

@@ -273,21 +273,26 @@ class CorpusController extends Controller
         }
         }
         //
         //
         $channels = [];
         $channels = [];
-        if ($request->get('mode') === 'edit') {
-            // 翻译模式加载json格式原文
-            $channels[] = ChannelApi::getSysChannel('_System_Wbw_VRI_');
-        } else {
-            // 阅读模式加载html格式原文
-            $channels[] = ChannelApi::getSysChannel('_System_Pali_VRI_');
-        }
-
         if ($request->has('channels')) {
         if ($request->has('channels')) {
             if (strpos($request->get('channels'), ',') === false) {
             if (strpos($request->get('channels'), ',') === false) {
                 $getChannel = explode('_', $request->get('channels'));
                 $getChannel = explode('_', $request->get('channels'));
             } else {
             } else {
                 $getChannel = explode(',', $request->get('channels'));
                 $getChannel = explode(',', $request->get('channels'));
             }
             }
-            $channels = array_merge($channels, $getChannel);
+            foreach ($getChannel as $channel) {
+                if (Str::isUuid($channel)) {
+                    $channels[] = $channel;
+                }
+            }
+        }
+
+        // 系统原文channel必须追加在末尾,makeContentObj 依赖此约定剔除它
+        if ($request->get('mode') === 'edit') {
+            // 翻译模式加载json格式原文
+            $channels[] = ChannelApi::getSysChannel('_System_Wbw_VRI_');
+        } else {
+            // 阅读模式加载html格式原文
+            $channels[] = ChannelApi::getSysChannel('_System_Pali_VRI_');
         }
         }
         $para = explode(',', $request->get('par'));
         $para = explode(',', $request->get('par'));