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(); ?>
额外验证步骤
- 可以在
$rows = $res->fetchAll(PDO::FETCH_ASSOC);后添加var_dump($rows);,确认数据库返回的数组中确实包含challengeId、title、description这些键名,且有实际数据。 - 检查模板中的区块标记
[row;block=begin]和[row;block=end]是否拼写正确,没有多余空格或语法错误。
问题现象回顾
渲染后的页面表格中未显示数据库实际数据,而是保留了[row.challengeId]、[row.title]等原始变量标识。
内容的提问来源于stack exchange,提问作者aliouche mohamed
相关产品推荐
相关产品推荐

