Создание комбинаций с использованием циклов списка CF

Я работаю над проектом Coldfusion и, кажется, застрял. Я новичок, поэтому надеюсь, что не сильно расслаблюсь. Цель моего проекта — создать список паролей с помощью вложенных циклов. Я должен разработать шаблон, который объединяет все слова из списка «cold, fusion, dynamic» со всеми словами из списка «bert, ernie, oscar», чтобы создать маркированный список действующих паролей. Этот шаблон должен обрабатывать два параметра URL с именами List1 и List2. Я должен использовать два цикла списка, вложенных друг в друга, чтобы получить все возможные комбинации слов. (Например, "coldbert", "coldernie", "coldoscar", "fusionbert" и т.д..)

Это то, что у меня есть до сих пор:

<cfinclude template="header.cfm">
<body>

<h2>Loop List</h2>


<cfhttp url="looplist.cfm?List1=cold,fusion,dynamic&List2=bert,ernie,oscar" method="get">

<CFLOOP LIST="#URL.List1#"
INDEX="List1">
<UL><CFOUTPUT>#List1#</CFOUTPUT></UL><br>
</CFLOOP>


<cfinclude template="footer.cfm">

Я хочу убедиться, что иду в правильном направлении. Спасибо, ребята, за любую помощь.


person Veronica    schedule 05.03.2017    source источник
comment
Я бы начал с выяснения кода цикла. Затем выясните, как использовать его в качестве шаблона. Тем не менее, одна проблема с вышеизложенным заключается в том, что переменная URL.list1 будет существовать только на странице, которую вы вызываете, то есть loopList.cfm.   -  person Leigh    schedule 06.03.2017
comment
... также, чтобы избежать путаницы, не используйте List1 как для индекса, так и для имен переменных. Используйте два разных имени.   -  person Leigh    schedule 06.03.2017


Ответы (1)


Если вы не звоните на страницу, которой нет на вашем сайте, я не вижу необходимости делать http-вызов. Вы можете просто создать функцию в шаблоне (хотя я бы предпочел, чтобы она была в отдельном cfc) и вызвать ее, чтобы получить свои комбинации паролей. Что-то типа ...

<cffunction name="getPasswordCombos" returntype="string">
    <cfargument name="list1" type="string" required="true" />
    <cfargument name="list2" type="string" required="true" />

    <cfset var passwordCombos = "" />
    <cfset var i = "" />
    <cfset var j = "" />

    <!--- your combo generation logic might look something like --->
    <cfloop list="#arguments.list1#" index="i">
        <cfloop list="#arguments.list2#" index="j">
            .....
            <!--- set passwordCombos logic here --->
            .....
        </cfloop>           
    </cfloop>

    <cfreturn passwordCombos />
</cffunction>

Затем,

<cfset passwordCombos = getPasswordCombos("cold,fusion,dynamic", "bert,ernie,oscar") />

Затем переберите "passwordCombos"

<ul>
    <cfloop list="#passwordCombos#" index="i">
        <li>#i#</li>
    </cfloop>
</ul>

Кроме того, если у вас есть пользователь CFHTTP, используйте cfhttpparam для передачи аргументов. Это намного чище.

<cfhttp result="result" url="looplist.cfm" method="GET">
    <cfhttpparam name="list1" type="url" value="cold,fusion,dynamic">
    <cfhttpparam name="list2" type="url" value="bert,ernie,oscar">
</cfhttp>
person ultimoTG    schedule 05.03.2017
comment
Согласовано. Если домашнее задание не требует использования cfhttp, не делайте этого. Есть более простые варианты. - person Leigh; 06.03.2017