我正在尝试从 smarty 前端动态发送一个变量从 foreach
到 smarty 后端,但不适用于所有变量,它只显示一个...有办法实现吗?
这是我的代码:
后端:
$allineamento = array();
foreach($db->query("SELECT Fields FROM Tables WHERE Allineamento = :allineamento ORDER BY ID",array("allineamento"=>$smarty->getTemplateVars('all'))) as $row){
$allineamento[] = $row;
}
$smarty->assign("allineamento",$allineamento);
前端:
{foreach $maps as $r}
{assign var="all" value="$r.ID"}
<div class="panel panel-default">
<div class="panel-heading">
<img src="img/locations/{$r.Immagine}" class="img-rounded">
<a class="panel-title" data-toggle="collapse" data-parent="#panel-1" href="#panel-element-{$r.ID}">{$r.Nome}</a>
</div>
<div id="panel-element-{$r.ID}" class="panel-collapse collapse">
{foreach $allineamento as $a}
<div class="panel-body">{$a.Nome}</div>
{/foreach}
</div>
</div>
{/foreach}
输出是这样的(重复字段):
1. FIELD 1
° SECOND FOREACH A
° SECOND FOREACH B
° SECOND FOREACH C
2. FIELD 2
° SECOND FOREACH A
° SECOND FOREACH B
° SECOND FOREACH C
Inseted of(不同字段由后端正确查询):
1. FIELD 1
° SECOND FOREACH A
° SECOND FOREACH B
° SECOND FOREACH C
2. FIELD 2
° SECOND FOREACH D
° SECOND FOREACH E
° SECOND FOREACH F
提前谢谢你。
最佳答案
我可能弄错了,但我相信您必须将数据作为数组传递。因此,例如,如果您的前端需要一个数组(如 $allineamento
),那么您的后端必须将此数组作为您传递的主 $data
数组的子项发送。此外,您没有告诉我们 $db
是什么,但我假设它是一个 mysqli
对象,在这种情况下,您需要使用 fetch_assoc()
获取数据,然后 while
遍历每个数据。像这样重做:
$result = $db->query("SELECT Fields FROM Tables WHERE Allineamento = :allineamento ORDER BY ID");
if ($result->num_rows > 0) {
// output data of each row
$allineamento = array();
while($row = $result->fetch_assoc()) {
$allineamento[] = $row;
}
$data = array('allineamento' => $allineamento);
$smarty->assign($data);
// display it
$smarty->display('index.tpl');
}
关于php - 从前端动态发送变量到 smarty 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35536465/