You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TinyButStrong合并Block时无法正确渲染视图的问题求助

TinyButStrong区块变量未替换问题解决方法

核心问题

你代码里的调用顺序错误:必须先加载模板,再执行MergeBlock区块合并操作。当前代码先调用MergeBlock再加载模板,导致TinyButStrong引擎无法识别模板中的区块标记,自然无法替换变量。

修正后的控制器代码

将LoadTemplate移到所有合并操作之前,保证引擎先读取模板结构:

<?php
include("../../tbs_3150/tbs_class.php");
include("../connect.php");
$tbs = new clsTinyButStrong;

// 先加载模板,让引擎识别区块标记
$tbs->LoadTemplate("../views/challenges.html");

try {
    $pdo = new PDO($host, $login, $password);
    $message = "connexion établie";
    if(isset($_GET["category"])){
        $res = $pdo->prepare("SELECT * FROM `challenge` 
                                WHERE `categoryId`=:categoryId;");
        $res->bindParam(":categoryId",$_GET["category"]);
        $res->execute();
        $rows = $res->fetchAll(PDO::FETCH_ASSOC);
        // 现在合并区块,引擎能找到对应的模板标记
        $tbs->MergeBlock("row",$rows);
    }
} catch (PDOException $erreur) {
    $message = $erreur->getMessage();
}

$tbs->Show();
?>

额外验证步骤

  1. 可以在$rows = $res->fetchAll(PDO::FETCH_ASSOC);后添加var_dump($rows);,确认数据库返回的数组中确实包含challengeId、title、description这些键名,且有实际数据。
  2. 检查模板中的区块标记[row;block=begin]和[row;block=end]是否拼写正确,没有多余空格或语法错误。

问题现象回顾

渲染后的页面表格中未显示数据库实际数据,而是保留了[row.challengeId]、[row.title]等原始变量标识。

内容的提问来源于stack exchange,提问作者aliouche mohamed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:43:29