我正在尝试学习新的cfscript语法,同时也在使用cflogin。我猜我不能在cfscript中混合使用cf标签,我也看不到一个与cflogin、cflogout、cfloginuser等同的脚本。
为了使用cflogin,我应该调用一个用CF8语法编写的组件吗?
public void function onRequest(required string Page) output="true" {
if (StructKeyExists(url,"logout")) {
<cflogout>
}
<cflogin>
local.qryUsr = new Components.Usr.Login(form);
if (local.qryUsr.Recordcount) {
<cfloginuser name="#form.UsrName#" password="#form.UsrPassword#" roles="#local.qryUsr.Roles#">
} else {
request.errorMessage = "Incorrect login";
include login/login.cfm;
return;
}
</cflogin>
include arguments.Page;
}发布于 2009-11-11 09:23:29
您不能直接混合使用标记和脚本。但是,您可以通过在标签周围编写函数包装器来伪造它:
<cffunction name="logout">
<cflogout />
</cffunction>并像这样调用:
logout();显然,这是一个微不足道的例子。您可能希望在实际代码中指定参数、返回值等。
注意一:不要对接受用户输入的通用查询函数执行此操作,因为您将无法使用cfqueryparam。
注意二:我通常不会这样做。如果我要编写依赖于仅限标签的操作的代码,我会使用标签语法。
发布于 2009-11-11 17:43:33
顺便说一句,在CFLib.org上有一个小的努力在为所有CF标签创建函数。有关更多详细信息,请查看CFMLLib
https://stackoverflow.com/questions/1712223
复制相似问题