ColdFusion cfloop пропустить строку или изменить цикл endRow
Я пытаюсь отобразить 2 изображения и пропустить одно, если оно соответствует следующим критериям (<cfif myDir.name eq property_mainimage>
который работает нормально, а затем перейти к следующему изображению и отображать следующее изображение, пока у меня не будет в общей сложности 2 изображения. Но когда изображение критерия, скажем, в строке 5, цикл отображает 3 изображения, когда изображение критерия, скажем, в строке 1, он отображает 2 изображения.
Кажется, в cfloop нет строки пропуска?
я пытался <cfif counter gt 3 > <cfabort>
который работает, но отображает 3 изображения, которые по-прежнему соответствуют критерию. Изображение больше 3. Ниже приведено то, с чем я работаю...
<cfdirectory directory="C:\Domains\domain.com\wwwroot\uploads\images\#property_ID#\" filter="*.jpg" name="myDir" type="file" sort="datelastmodified">
<ul>
<cfset counter = 0>
<cfset endrowvalue = 3 >
<cfloop query="myDir" endRow="#endrowvalue#">
<cfset counter = counter +1 >
<li>
<cfif right(myDir.name,4) is ".jpg">
<cfif fileexists("C:\Domains\ domain.com\wwwroot\uploads\ images\#property_ID#\#left(mydir.name,len(myDir.name)-4)#.jpg")>
<cfif myDir.name eq property_mainimage>
DO NOT SHOW THIS IMAGE
<cfelse>
<cfset endrowvalue = 1 >
<cfset myDir.endRow = 1 >
test #endrowvalue#
test #counter# <img src="#request.root#uploads/images/#property_ID#/#myDir.name#" border="0" width="230px" style="margin-bottom:15px;" />
</cfif>
</cfif>
</cfif>
</li>
</cfloop>
</ul>
любая помощь будет наиболее ценной.
2 ответа
Я бы использовал счетчик для подсчета, когда вы показываете изображение. Как только вы получите 2 изображения, вырвитесь из цикла.
<cfdirectory directory="C:\Domains\domain.com\wwwroot\uploads\images\#property_ID#\" filter="*.jpg" name="myDir" type="file" sort="datelastmodified">
<ul>
<cfset counter = 1>
<cfloop query="myDir">
<li>
<cfif right(myDir.name,4) is ".jpg">
<cfif fileexists("C:\Domains\ domain.com\wwwroot\uploads\ images\#property_ID#\#left(mydir.name,len(myDir.name)-4)#.jpg")>
<cfif myDir.name eq property_mainimage>
DO NOT SHOW THIS IMAGE
<cfelse>
<!--- image displayed increment coutner --->
<cfset counter++>
<img src="#request.root#uploads/images/#property_ID#/#myDir.name#" border="0" width="230px" style="margin-bottom:15px;" />
</cfif>
</cfif>
</cfif>
<cfif counter EQ 2>
<cfbreak>
</cfif>
</li>
</cfloop>
</ul>
Это отформатированный комментарий. Ваш код имеет это:
<cfset endrowvalue = 3 >
<cfloop query="myDir" endRow="#endrowvalue#">
<cfif myDir.name eq property_mainimage>
DO NOT SHOW THIS IMAGE
<cfelse>
<cfset endrowvalue = 1 >
Вы должны проверить это, чтобы быть уверенным, но я подозреваю, что атрибут endRow вашего тега cfloop будет по-прежнему равен 3, даже если вы измените значение переменной endrowvalue на 1.
Возможно, это не является причиной вашей текущей проблемы, но, если мои подозреваемые верны, у вас возникнет проблема в другом месте, или вы выполняете бессмысленную команду.