cf目录基于过滤器输出不同的html

问题描述 投票:0回答:3

我想根据传递给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,但是我不确定如何对其进行外观设置。是否需要将其存储在循环外部的变量中?

非常感谢您的帮助

html coldfusion cfml cfloop cfdirectory
3个回答
1
投票

让我们逐步进行此操作

<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,则...


4
投票

您可以简单地执行以下操作。


2
投票

您尚未告诉我们您实际上正在遇到什么错误,但是如果问题中的代码确实是您正在使用的代码,那么您的问题不是过滤器,而是这个:

© www.soinside.com 2019 - 2024. All rights reserved.