尝试将<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 .../>
。
答案 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