Отредактируйте приложение Coldfusion Survey, чтобы получить еще одно значение поля

У меня есть приложение для обследования с холодным синтезом, которое я пытаюсь отредактировать, чтобы вернуть и сравнить значение нового столбца в базе данных.

У меня есть следующая функция в файле cfc, которая должна возвращать значение для нового поля "questionfiltert":

<cffunction name="getQuestion" access="public" returnType="struct" output="false"
            hint="Grabs a question.">
    <cfargument name="id" type="uuid" required="true" hint="The UUID of the question to get.">
    <cfset var qQuestion = "">
    <cfset var result = "">

    <cfquery name="qQuestion" datasource="#variables.dsn#">
        select  #variables.tableprefix#questions.id, surveyidfk, question, questiontypeidfk, rank, required, questionfilter, 
        #variables.tableprefix#questiontypes.name as questiontype, #variables.tableprefix#questions.nextquestion, #variables.tableprefix#questions.nextquestionvalue
        from    #variables.tableprefix#questions, #variables.tableprefix#questiontypes
        where   #variables.tableprefix#questions.id = <cfqueryparam value="#arguments.id#" cfsqltype="CF_SQL_VARCHAR" maxlength="35">
        and     #variables.tableprefix#questions.questiontypeidfk = #variables.tableprefix#questiontypes.id
    </cfquery>

    <cfset result = variables.utils.queryToStruct(qQuestion)>
    <cfset result.answers = getAnswers(arguments.id)>
    <cfreturn result>

</cffunction>

Код, где я пытаюсь получить

...<cfif allDone>

    <cfif lastQuestion.nextQuestion neq "">
        <!--- Ok, we definitely need to go someplace else. But do we have to have an answer? --->       
        <cfif lastQuestion.nextQuestionValue eq "">
            <!--- In this branch, we ALWAYS go to another q --->
            <cfset questionToLoad = application.question.getQuestion(lastQuestion.nextQuestion)>
            <cfset currentInfo.currentStep = questionToLoad.rank>
        <cfelse>
            <cfset answer = currentInfo.answers[lastQuestion.id]>
            <cfset theanswermatches = false>
            <!--- first do a simple check - assumes answer is simple --->
            <cfif isSimpleValue(answer) and answer is lastQuestion.nextQuestionValue>
                <cfset theAnswerMatches = true>
            </cfif>
            <!--- next support our MC with a .list key --->
            <cfif isStruct(answer) and structKeyExists(answer,"list") and listFind(answer.list, lastQuestion.nextQuestionValue)>
                <cfset theAnswerMatches = true>
            </cfif> 
            <cfif theanswermatches>
                <cfset questionToLoad = application.question.getQuestion(lastQuestion.nextQuestion)>
                <cfset currentInfo.currentStep = questionToLoad.rank>
            <cfelse>
                <cfset currentInfo.currentStep = currentInfo.currentStep + 1>
            </cfif>

            </cfif>
        </cfif>
    <cfelse>
        <cfset currentInfo.currentStep = currentInfo.currentStep + 1>
    </cfif>
    <cflocation url="#cgi.script_name#?#cgi.query_string#" addToken="false">
</cfif>

Выше код работает нормально, но я пытаюсь добавить условие для его работы таким образом. Там, где у вас есть курсив, он переходит к следующему вопросу, если ответ совпадает. Я хочу добавить условие где if questionfilter ="ifnot" тогда

<cfif theanswermatches>
                <cfset questionToLoad = application.question.getQuestion(lastQuestion.nextQuestion)>
                <cfset currentInfo.currentStep = questionToLoad.rank>
            <cfelse>
                <cfset currentInfo.currentStep = currentInfo.currentStep + 1>
            </cfif>

изменения в

            <cfif theanswermatches>
                <cfset currentInfo.currentStep = currentInfo.currentStep + 1>
            <cfelse>
                <cfset questionToLoad = application.question.getQuestion(lastQuestion.nextQuestion)>
                <cfset currentInfo.currentStep = questionToLoad.rank>
            </cfif>

Каждый раз, когда я пытаюсь добавить условие, все приложение завершает опрос в любом состоянии. Я подозреваю, что код не получает значение для фильтра вопросов. Как я могу получить это, а также подтвердить, что я получаю.

В настоящее время я занимаюсь

 <cfif lastQuestion.questionfilter eq "">

Все предложения будут оценены

0 ответов

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