首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在smarty模板引擎中实现嵌套的foreach循环?

如何在smarty模板引擎中实现嵌套的foreach循环?
EN

Stack Overflow用户
提问于 2017-10-08 04:11:12
回答 2查看 374关注 0票数 0

我是个新手,正在尝试实现一个嵌套的foreach循环。所以我有两个表subCategory和members,其中members和subCategory可以通过subcategory_id连接。例如,大约有5个类别和大约50个成员属于这5个类别中的任何一个。我想先循环子类别,然后显示每个类别下的成员。但我不能在smarty中做第二个foreach。在普通的php中,我可以这样做,但在smarty中就不行了。请帮帮忙。

php代码

$result = mysqli_query($conn,"SELECT * FROM subCategory ");
$list_subchannels = array();
while ( $row = mysqli_fetch_assoc($result) )
{

        $subcategory = $row['subcat_id'];
        $result1 = mysqli_query($conn,"SELECT * FROM member JOIN subCategory ON member.subcategory_id = subCategory.subcat_id WHERE member.subcategory_id = '$subcategory' ");
        $list_subchannels = array();
        while ( $row1 = mysqli_fetch_assoc($result1) )
        {
            $list_subchannels[] = $row1;
            $smarty->assign($row1['subcat_name'],$list_subchannels);

        }


        $list_subcategories[] = $row;
        $smarty->assign("subcategory",$list_subcategories);

}

.tpl代码是

{foreach from=$subcategory key=k item=b}
    Sub Category Names: {$b.subcat_name}

    <!-- Listing Item -->
    {foreach from=$b.subcat_name key=k item=a}
                    <h3>Member Name: {$a.channel_name}</h3>
                    <span>Member Id: {$a.member_id}</span>
    {/foreach}                
    <!-- Listing Item / End -->

{/foreach}

它正确地显示了所有子类别名称(即第一个foreach),但显示了它们下面的成员。提亚

EN

回答 2

Stack Overflow用户

发布于 2018-07-26 06:11:25

PHP代码:

$result = mysqli_query($conn,"SELECT * FROM subCategory ");
$list_subchannels = array();
while ( $row = mysqli_fetch_assoc($result) )
{
    $subcategory = $row['subcat_id'];
    $result1 = mysqli_query($conn,"SELECT * FROM member JOIN subCategory ON member.subcategory_id = subCategory.subcat_id WHERE member.subcategory_id = '$subcategory' ");
    $list_subchannels = array();
    while ( $row1 = mysqli_fetch_assoc($result1) )
    {
        // $list_subchannels[] = $row1; // COMMENT
        // $smarty->assign($row1['subcat_name'],$list_subchannels); // COMMENT

        $list_subchannels[$subcategory] = $row1; // HERE
    }

    $list_subcategories[] = $row;
    $smarty->assign("subcategory",$list_subcategories);
    $smarty->assign("subchannels", $list_subchannels); // HERE
}

第三方物流代码:

{foreach from=$subcategory key=k item=b}
    Sub Category Names: {$b.subcat_name}

    <!-- Listing Item -->
    {foreach from=$subchannels[$b.subcat_id] key=k item=a} // HERE
                <h3>Member Name: {$a.channel_name}</h3>
                <span>Member Id: {$a.member_id}</span>
    {/foreach}                
    <!-- Listing Item / End -->

{/foreach}
票数 0
EN

Stack Overflow用户

发布于 2018-07-25 19:10:30

尝试使用{function} {/function}。

例如:

{function name=subcategory_listing level=0}
    {foreach $subcategory as $subc}
        {if $level == 0}
            Sub Category Names: {$subc.subcat_name}
        {else}
            <h3>Member Name: {$subc.channel_name}</h3>
            <span>Member Id: {$subc.member_id}</span>
        {/if}

        {subcategory_listing cats=$subc.subcat_name level=$level+1}
    {/foreach}
 {/function}

 {subcategory_listing cats=$subcategory}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46624665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档