Вопрос
Я пытаюсь изучить новый синтаксис cfscript, а также использовать cflogin.Я предполагаю, что не могу смешивать теги cf в cfscript и не вижу сценария, эквивалентного cflogin, cflogout, cfloginuser.
Должен ли я вызывать компонент, написанный с синтаксисом CF8, чтобы использовать 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;
}
Решение
Вы не можете напрямую смешивать теги и скрипты.Однако вы можете подделать его, написав вокруг тегов функциональные оболочки:
<cffunction name="logout">
<cflogout />
</cffunction>
и позвоните так:
logout();
Очевидно, это тривиальный пример.Вы хотите указать свои аргументы, возвращаемое значение и т. д.в вашем фактическом коде.
Обратите внимание:Не делайте этого для общей функции запроса, которая принимает ввод пользователя, так как вы не сможете использовать cfqueryparam.
Примечание второе:Обычно я этого не делаю.Если я пишу код, который зависит от операций только с тегами, я использую синтаксис тегов.