我想根据传递给cfdirectory的过滤条件吐出稍微不同的html。
这是我的cfml:
<cfdirectory
directory="#dirName#"
name="fileList"
action="list"
type="file"
filter="*.jpg|*.jpeg|*.png|*.gif|*.mp4"
>
<ul id="content">
<cfoutput>
<cfloop query="fileList">
<cfif filter NEQ '*.mp4'> // I guess this is not possible and is throwing the error
<li class="content image">
<img src="img/#name#" />
</li>
</cfif>
<cfelse>
<li class="video image">
<video controls="controls">
<source src="img/#name#" type="video/mp4">
</video>
</li>
</cfif>
</cfloop>
</cfoutput>
</ul>
我想我无法简单地访问filter
内部的cfif
,但是我不确定如何对其进行外观设置。是否需要将其存储在循环外部的变量中?
非常感谢您的帮助
让我们逐步进行此操作
<ul id="content">
<!--- Normally you want to loop over query in a cfoutput. No need for both --->
<cfoutput query="fileList">
<cfif listlast(fileList.name, '.') NEQ 'mp4'>
<li class="content image">
<img src="img/#name#" />
</li>
<cfelse>
<li class="video image">
<video controls="controls">
<source src="img/#name#" type="video/mp4">
</video>
</li>
</cfif>
</cfoutput>
</ul>
更多详细信息
<cfif listLast(fileList.name, '.') NEQ 'mp4'>
fileList.name
表示:我们要查看name
。但不仅仅是在任何范围内都可以存在的任何名称。我们想要与fileList
listLast()
表示采用字符串变量,用逗号分隔并告诉我最后一项是什么。以字符串形式返回。
listLast(..., '.')
您知道关于逗号的那部分,是的,让我们使用句号。换句话说,最后一个.
之后文件名的最后一部分是什么。
如果不是mp4,则...
您可以简单地执行以下操作。
您尚未告诉我们您实际上正在遇到什么错误,但是如果问题中的代码确实是您正在使用的代码,那么您的问题不是过滤器,而是这个: