Pregunta
Estoy tratando de aprender la nueva sintaxis cfscript, así como el uso cflogin. Supongo que no se pueden mezclar etiquetas cf en cfscript, y no ver una secuencia de comandos equivalente a cflogin, cflogout, cfloginuser.
¿Debo llamar a un componente que está escrito en la sintaxis CF8 con el fin de utilizar cflogin?
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;
}
Solución
No se puede mezclar directamente etiquetas y secuencias de comandos. Sin embargo, usted puede fingir escribiendo envolturas alrededor de las etiquetas de función:
<cffunction name="logout">
<cflogout />
</cffunction>
y llamar como:
logout();
Obviamente, este es un ejemplo trivial. Lo que quiere especificar sus argumentos, el valor de retorno, etc. en su código real.
Nota uno:. No hacer esto para una función de consulta genérica que acepta la entrada del usuario, ya que no será capaz de utilizar cfqueryparam
Nota dos: por lo general no hago esto. Si estoy escribiendo código que depende de las operaciones de la etiqueta de sólo utilizo la sintaxis de la etiqueta.