cfdirectory 输出不同 html 基于过滤器
cfdirectory output different html based on filter
我想根据传递给 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>
我想我不能简单地访问 cfif
中的 filter
,但我不确定如何给它设置皮肤。是否需要存储在循环外的变量中?
非常感谢任何帮助
您可以简单地执行以下操作。
<cfif listLast(fileList.name, '.') NEQ 'mp4'>
你没有告诉我们你实际遇到了什么错误,但如果问题中的代码确实是你正在使用的代码,那么你的问题不是过滤器,而是这个:
</cfif>
<cfelse>
删除虚假的 </cfif>
并重新 运行,如果之后您仍然遇到错误,请将其添加到问题中。
编辑:您仍然会发现对过滤器的引用不起作用,但 RRK 的 listLast 答案会很好 - 如果您还没有这样做,请确保您的目录实际上是正确的路径,例如:
<cfset dirName = expandPath('img')>
<cfdirectory
directory="#dirName#"
name="fileList"
action="list"
type="file"
filter="*.jpg|*.jpeg|*.png|*.gif|*.mp4"
>
<ul id="content">
<cfoutput>
<cfloop query="fileList">
<cfif listLast(fileList.name, '.') NEQ 'mp4'>
<li class="content image">
<img src="img/#EncodeForUrl(name)#" />
</li>
<cfelse>
<li class="video image">
<video controls="controls">
<source src="img/#EncodeForURL(name)#" type="video/mp4">
</video>
</li>
</cfif>
</cfloop>
</cfoutput>
</ul>
让我们一步一步来
<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()
表示取字符串变量,用逗号分隔并告诉我最后一项是什么。 Return 作为字符串。
listLast(..., '.')
你知道关于逗号的那部分,是的,让我们用句号代替。也就是说,文件名最后的.
.
后面的部分是什么
如果不是mp4,那么...
我想根据传递给 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>
我想我不能简单地访问 cfif
中的 filter
,但我不确定如何给它设置皮肤。是否需要存储在循环外的变量中?
非常感谢任何帮助
您可以简单地执行以下操作。
<cfif listLast(fileList.name, '.') NEQ 'mp4'>
你没有告诉我们你实际遇到了什么错误,但如果问题中的代码确实是你正在使用的代码,那么你的问题不是过滤器,而是这个:
</cfif>
<cfelse>
删除虚假的 </cfif>
并重新 运行,如果之后您仍然遇到错误,请将其添加到问题中。
编辑:您仍然会发现对过滤器的引用不起作用,但 RRK 的 listLast 答案会很好 - 如果您还没有这样做,请确保您的目录实际上是正确的路径,例如:
<cfset dirName = expandPath('img')>
<cfdirectory
directory="#dirName#"
name="fileList"
action="list"
type="file"
filter="*.jpg|*.jpeg|*.png|*.gif|*.mp4"
>
<ul id="content">
<cfoutput>
<cfloop query="fileList">
<cfif listLast(fileList.name, '.') NEQ 'mp4'>
<li class="content image">
<img src="img/#EncodeForUrl(name)#" />
</li>
<cfelse>
<li class="video image">
<video controls="controls">
<source src="img/#EncodeForURL(name)#" type="video/mp4">
</video>
</li>
</cfif>
</cfloop>
</cfoutput>
</ul>
让我们一步一步来
<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()
表示取字符串变量,用逗号分隔并告诉我最后一项是什么。 Return 作为字符串。
listLast(..., '.')
你知道关于逗号的那部分,是的,让我们用句号代替。也就是说,文件名最后的.
.
如果不是mp4,那么...