Pergunta
Estou tentando aprender a nova sintaxe do CFScript, bem como usar o cflogin. Acho que não consigo misturar tags CF no CFScript e não vejo um script equivalente a cflogin, cflogout, cfLoginUser.
Devo chamar um componente que está escrito na sintaxe do CF8 para usar o 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;
}
Solução
Você não pode misturar diretamente tags e scripts. No entanto, você pode fingir que escrevendo embalagens de funções em torno das tags:
<cffunction name="logout">
<cflogout />
</cffunction>
e chamar como:
logout();
Obviamente, este é um exemplo trivial. Você deseja especificar seus argumentos, seu valor de retorno etc. no seu código real.
NOTA UM: Não faça isso para uma função de consulta genérica que aceita entrada do usuário, pois você não poderá usar o CFQueryParam.
Nota dois: geralmente não faço isso. Se estou escrevendo código que depende de operações somente de tags, uso a sintaxe da tag.