Имена динамических переменных Coldfusion - PullRequest
2 голосов
/ 12 ноября 2009

Эй, ребята, у меня возникла проблема, связанная с именами динамических переменных. Что происходит, у меня есть CFC, который создает часть формы для меня, используя некоторые данные в таблице. Затем cfc отправляет код формы обратно на страницу в виде строки. Ну, мне нужно присвоить значения этим полям формы, чтобы люди не перезаписывали данные. Я вытягиваю данные в функции в cfc. Так что я пытаюсь бросить эту динамическую переменную в строку, и это портит мне жизнь. Я получаю сообщение об ошибке "1001 *

A CFML variable name cannot end with a "." character.

Вот код, который я использую, который дает мне ошибку. Я не слишком опытен в программировании, я не занимался этим слишком долго. Так что ЛЮБОЙ вклад будет потрясающим.

<!--- ================================================================== --->

            <cfargument name="catFormQuery" type="query" required="yes">
            <cfargument name="listingID" required="yes">

            <cfset var getListingInformation = "">
            <cfset var returnVar = "">
            <cfset var fieldValue = "">
            <cfset var catNameNoSpace = "">

            <!--- get the listing Information --->
            <cfquery name="getListingInformation" datasource="backEndDSN">
             Select * from listings
                where listingID = #arguments.listingID#
            </cfquery>

<cfoutput query="arguments.catFormQuery">
             <!---====================--->
                <!--- Set catNameNoSpace --->
             <!---====================--->

                <cfset catNameNoSpace = replaceNoCase(arguments.catFormQuery.catName, " ", "_")>

 <!---==========--->
 <!--- for text --->
                <!---==========--->
                <cfif arguments.catFormQuery.catType eq 'text'>
                    <cfset returnVar = returnVar & #arguments.catFormQuery.catName# & ":&nbsp;&nbsp;<input type='text' name='#catNameNoSpace#' value=" & getListingInformation.#catNameNoSpace# & "><br />">
                </cfif>

Так что в любом случае, если вы можете дать мне какой-либо вклад или совет, это было бы здорово Большое спасибо.

Код прямо здесь внизу.

                    <cfset returnVar = returnVar & #arguments.catFormQuery.catName# & ":&nbsp;&nbsp;<input type='text' name='#catNameNoSpace#' value=" & getListingInformation.#catNameNoSpace# & "><br />">

Ответы [ 4 ]

13 голосов
/ 12 ноября 2009

Это определенно не будет работать, это не допустимый CFML:

getListingInformation.#catNameNoSpace#

Оценивать - это дьявол, но вместо этого вы можете использовать синтаксис в стиле массива. Единственное предостережение в том, что вам нужно явно указать строку, из которой вы хотите получить значение (и если в запросе нет строк, это приведет к ошибке).

getListingInformation[catNameNoSpace][1]
2 голосов
/ 12 ноября 2009

Ответ Сикстена имеет синтаксис, который вы можете использовать, но вам все равно нужно следить за недопустимыми символами в именах переменных, как и в других местах. Окончательное руководство по переменным здесь: http://www.depressedpress.com/Content/Development/ColdFusion/Articles/Variables/Index.cfm, особенно этот раздел http://www.depressedpress.com/Content/Development/ColdFusion/Articles/Variables/NotationIndexed.cfm

1 голос
/ 17 июня 2016

Немного отличается, но может быть полезно всем, кто смотрит на это: Вы также можете использовать Переменные ["staticPartOfVariableName # DynamicPartOfVariableName #"].

0 голосов
/ 12 ноября 2009

Хорошо, думаю, я понял это. Мне не очень нравится, как я должен был это сделать.

evaluate("getListingInformation.#catNameNoSpace#")

Я слышал где-то до этого, что использование метода оценки медленное и не очень чистое. Есть ли лучший вариант?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...