错误代码警告:为嵌套菜单分组数组

时间:2011-05-18 13:38:54

标签: coldfusion coldfusion-9

哇。我被要求为公司的树状菜单添加第3级。以下是我发现大约6个月前创建的内容。虽然它有效,但我无法再为它添加另一个cfloop hack。我的所有感受都告诉我这个错误的代码和重做。

我无法更改数据库,也无法在查询之外的任何其他内容中返回结果。现在你知道它的方式,我在这里有什么选择???

数据库中的每条记录都没有任何关系,下面的代码只是查看小部件的名称,如果它是父级,则可以根据以下代码计算:

widgetName的例子

1 =合规性:

2 =合规性:文档库:

3 =合规性:文档库:所有公司

所以上面说小部件2应该是2级。看看你将以非常糟糕的方式看到的代码......

<cfoutput>

<ul id="root" class="menu">     

     <cfloop array="#rc.widgets.getPageRecords()#" index="local.widgets">


         <cfif listLen(local.widgets.getwidgetName(),":") eq 1>
          <li>

            <a href='javascript:void(0);' childid = '#local.widgets.getwidgetID()#' class='cat_close category'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
            <a href='javascript:void(0);'>#local.widgets.getwidgetName()# - #listLen(local.widgets.getwidgetName(),":")#</li></a>
            <cfset wordToFind = local.widgets.getwidgetName()>
            <ul id='#local.widgets.getwidgetID()#'>
                 <cfloop array="#rc.widgets.getPageRecords()#" index="local.widgets">
                     <cfif listLen(local.widgets.getwidgetName(),":") eq 2 AND  #find(wordToFind,local.widgets.getwidgetName())#>
                        <li>
                            <a href='javascript:void(0);' childid = '#local.widgets.getwidgetID()#' class='cat_close category'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
                            <a href='javascript:void(0);'>#local.widgets.getwidgetName()# - #listLen(local.widgets.getwidgetName(),":")#</li></a>
                        </li>
                     </cfif>
                 </cfloop>
            </ul>
         </cfif>


     </cfloop>



</ul>
</cfoutput>

1 个答案:

答案 0 :(得分:1)

我会使用递归函数来执行此操作,这将为您提供无限的未来兼容性。我不确定你使用的数据是什么样的,但似乎它应该是可能的。