Question
Je suis en train d'apprendre la nouvelle syntaxe cfscript, ainsi que l'utilisation cflogin. Je devine que je ne peux pas mélanger les balises cf dans cfscript, et je ne vois pas d'équivalent de script à cflogin, cflogout, cfloginuser.
Dois-je appeler un composant qui est écrit dans la syntaxe CF8 pour utiliser 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;
}
La solution
Vous ne pouvez pas mélanger directement les balises et les scripts. Cependant, vous pouvez faux en écrivant des enveloppes de fonction autour des balises:
<cffunction name="logout">
<cflogout />
</cffunction>
et appeler comme:
logout();
De toute évidence, ceci est un exemple trivial. Vous voudriez spécifier vos arguments, votre valeur de retour, etc. dans votre code actuel.
Remarque un:. Ne pas le faire pour une fonction de requête générique qui accepte l'entrée d'utilisateur, que vous ne pourrez pas utiliser cfqueryparam
Note deux: Généralement, je ne le fais pas. Si je suis à écrire du code qui dépend des opérations de tag seule, j'utilise la syntaxe de la balise.