Forráskód Böngészése

fix(api-v13): 修复无效 channel 导致句子渲染报错

getSentTpl 直接访问 $channelIndex[$channel],当引用的 channel 不存在时
抛出 Undefined array key。加 isset 保护,并留 TODO 待改为抛异常由外层
捕获后向前端返回 message。

同时补上 nissaya 模版的 html 分支。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BbA1nkFVxFQnqF1Yb6TVki
visuddhinanda 1 hete
szülő
commit
3d47e81ba8

+ 8 - 0
api-v13/app/Http/Api/TemplateRender.php

@@ -681,6 +681,14 @@ class TemplateRender
                     'tpl' => 'nissaya',
                 ];
                 break;
+            case 'html':
+                if ($this->lang === 'my') {
+                    $output = "<span lang='pi-Mymr'>{$pali}</span>၊ ";
+                } else {
+                    $output = "<span lang='pi-Latn'>{$pali}</span> ";
+                }
+                $output .= "<span lang='{$this->lang}'>{$meaning}</span>";
+                break;
             case 'prompt':
                 $output = Tools::MyToRm($pali).':'.end($props['meaning']);
                 break;

+ 7 - 1
api-v13/app/Http/Controllers/CorpusController.php

@@ -155,9 +155,15 @@ class CorpusController extends Controller
 
         // 获取wbw channel
         // 目前默认的 wbw channel 是第一个translation channel
+        // TODO: channel 不存在时目前只是静默跳过(句子会渲染为空)。
+        // 以后改为抛出异常,由外层(render_sent / 控制器)捕获,
+        // 把出错信息 message 传给前端提示用户 channel 无效。
         foreach ($channels as $channel) {
             // code...
-            if ($channelIndex[$channel]->type === 'translation') {
+            if (
+                isset($channelIndex[$channel]) &&
+                $channelIndex[$channel]->type === 'translation'
+            ) {
                 $this->wbwChannels[] = $channel;
                 break;
             }