Область не работает за пределами папки CFC для области действия сеанса - PullRequest
2 голосов
/ 07 мая 2019

Я недавно установил ColdFusion 2018 на работе и был разочарован невозможностью правильно настроить прицел.Как обычно, я помещаю все свои .cfcs в папку / CFC, и ни один из них не будет работать без пустого файла application.cfm в этой папке.Я пытался расширить приложение, в том числе приложение, приложение для расширения прокси, перемещение CFC в корневую папку вызывает только синтаксическую ошибку в JSON.Я прочитал каждую статью, которую смог найти за последние две недели, и я до сих пор не могу понять, почему сфера не сработает.Кажется, я могу установить переменные сеанса в папке / CFC, но они не доступны вне папки?Я не работал с CF в течение нескольких лет, но считаю себя сведущим, и на всю жизнь я не могу заставить это работать.вполне вероятно, что я скучаю по лесу из-за деревьев, но если кто-то захочет помочь, я буду благодарен.

экземпляр объекта;

application.SessionMgr = CreateObject(this.obj,'CFC.SessionMgr').init('session');

вызов прокси;

cfajaxproxy cfc="CFC/SessionMgr"       jsclassname="SessionMgr";

возврат верен;

var s = new SessionMgr();
       var setReport = s.setValue('ReportID', document.getElementById('cboReportKey').value);
       alert(setReport);

однако даже ручная настройка session.ReportID = 7 не будет сохраняться вне папки.

здесьSessionMgr.init

это init;

<cffunction name="init" access="public" returntype="SessionMgr" output="no" hint="I instantiate and return this object.">
        <cfargument name="scope" type="string" required="yes">
        <cfargument name="requestvar" type="string" default="SessionInfo">
            <cfset var scopes = "application,Client,Session">
            <cfif Not ListFindNoCase(scopes, arguments.scope)>
                <cfthrow message="The scope argument for SessionMgr must be a valid scope (#scopes#)." type="MethodErr">
            </cfif>
            <cfset variables.scope = arguments.scope>
            <cfset variables.requestvar = arguments.requestvar>
            <cfset updateRequestVar()>
        <cfreturn this>
    </cffunction>

и setValue fn

<cffunction name="setValue" access="remote"  hint="I set the value of the given user-specific variable." returntype="string">
        <cfargument name="variablename" type="string" required="yes">
        <cfargument name="value" type="any" required="yes">
            <cfset var val = arguments.value />
            <cfset SetVariable("#arguments.variablename#", val) />
            <cfset r =  Evaluate(arguments.variablename) />
        <cfreturn r />
    </cffunction>

1 Ответ

0 голосов
/ 07 мая 2019

ок, попробовав все, вот решение.расширение по доверенности не работает в этой ситуации, попробовал это.В итоге получилось создать application.cfc в папке / CFC и удалить все функциональные компоненты из / root application.cfc и просто убедиться, что имя приложения в урезанной версии в папке / CFC совпадает с именем / root cfc.название.Это очевидно psuedo расширяет всю функциональность из / root application.cfc и делает все доступным для фреймворка в папке / CFC.Спасибо всем, кто помог мне вынести мысли за пределы рулевой рубки и решил эту проблему.

...