如何在Coldfusion <cfscript>

时间:2019-08-06 23:54:32

标签: coldfusion cfml

尝试将<cfif>语句转换为if脚本副本,但其主体包含<form>标记。

它位于我的onRequestStart文件的application.cfc方法内。

CF

<cfscript>
    if (!isdefined("session.username")) {
        include "TEMP_Head.cfm";
        </cfscript>
        <form action="index.cfm" method="Post">
                        <input type="submit" name="LogOutUser" value="Log Out">
                </form>
        <cfscript>
        include "TEMP_Foot.cfm";
    }
</cfscript>

我希望它可以运行,但会收到错误消息:

开始标签必须具有匹配的结束标签。可以通过添加</cfscript>来提供显式结束标签。如果标记的主体为空,则可以使用快捷方式<cfscript .../>

3 个答案:

答案 0 :(得分:4)

如果您对此一无所知,就像@Ageax所评论的那样,表单只是一个HTML字符串。您可以尝试以下方法:

<cfscript>
    if (structKeyExists(session, "username")) {
        var loginForm = '<form action="index.cfm" method="Post">';
        loginForm &= '<input type="submit" name="LogOutUser" value="Log Out">';
        loginForm &= '</form>';

        include "TEMP_Head.cfm";
        writeOutput(loginForm);
        include "TEMP_Foot.cfm";
    }
</cfscript>

我个人将表单放在自己的include中,以避免将演示文稿代码放置在Application.cfc中。

另外,按照詹姆斯的回答,活在当下!停止使用isDefined()并根据您使用的CF版本使用structKeyExists()structname.keyExists()

答案 1 :(得分:3)

我什至不愿意为此cfscript

<cfif NOT isdefined("session.username")>
    <cfinclude template="TEMP_Head.cfm">
    <form action="index.cfm" method="Post">
        <input type="submit" name="LogOutUser" value="Log Out">
    </form>
    <cfinclude template="TEMP_Foot.cfm">
</cfif>

OffTopic

IsDefined()不是检查变量的最干净的方法。考虑

<cfif NOT session.keyExists("username")>

答案 2 :(得分:2)

您可以使用如下代码(在该页面中包含另一个cfm页面,在该页面中编写HTML表单代码)。不会出现任何错误。

layout = go.Layout(title='Simple Plot from csv data',
                   plot_bgcolor='rgb(230, 230,230)')

<cfscript> if (!isdefined("session.username")) { include "TEMP_Head.cfm"; //Your Header part include "form_include.cfm"; // Your Form include "TEMP_Foot.cfm"; //Your Footer part } </cfscript> 中使用您的HTML表单代码。

form_include.cfm

REsult as screenshot