Где я могу определить переменные приложения и сеанса в файле Coldfusion8 application.cfc?

Я пытаюсь настроить мой первый файл application.cfc.

Я пытался вызывать переменные на основе событий, например, так:

<cffunction name="onApplicationStart" returnType="boolean" output="false">
    <cfparam name="Application.RootDir" default="/">
    <cfreturn true>
</cffunction>

<cffunction name="onSessionStart" returnType="boolean" output="false">
    <cfparam name="Session.activeSession" default="Yes">
    <cfparam name="Session.activeLogin" default="No">
    <cfreturn true>
</cffunction>

Я думал, что это будет хорошо работать, но оказывается, что нет, потому что мне нужно объявить все раньше, вот так:

 <cfparam name="Application.RootDir" default="">
 <cfparam name="Session.activeSession" default="">
 <cfparam name="Session.activeLogin" default="">

Мой вопрос:
Почему я должен использовать CF-события для объявления переменных. В любом случае, если мне нужно объявить вне события, я мог бы сохранить строку кода и объявить и присвоить начальное значение? Я делаю это неправильно или события только для того, чтобы давать показания, а не для объявления?

Спасибо за вклад!

1 ответ

Решение

Что вы подразумеваете под "до" ("объявить все до")? До чего? Обработчик onApplicationStart() - это первое, что запускается при запуске приложения, а обработчик onSessionStart() - это первое, что запускается при запуске сеанса. Таким образом, в контексте создаваемых приложений и сеансов "до" нет. Я думаю, что вам нужно показать нам больше кода: например, некоторый код, который демонстрирует, что они "не работают".

Тем не менее, вы не показываете нам раздел псевдо-конструктора вашего Application.cfc, поэтому невозможно сказать, какие у вас проблемы, если они есть. Но вам нужно включить управление сеансом до того, как сеансы будут работать, и вам, возможно, нужно будет назвать свое приложение до того, как переменные приложения или сеанса тоже будут привязаны (хотя они могут просто работать и с безымянным приложением? Даже если они это делают, лучше всего назовите ваше приложение).

Наконец - и это не будет иметь никакого отношения к тому, установлены ли ваши переменные или нет, но вы должны использовать <cfset> при установке переменных, а не <cfparam>, Оба имеют одинаковый эффект здесь, но первый является правильным инструментом для работы.

Другие вопросы по тегам