У меня проблема с функциями внутри моего cfc. Они действуют смешно, когда я пытаюсь ввести условную логику для назначения запроса сетке. В основном в URL-адресе у меня будет ?GRIDID=x
, и он сообщит, что функция cfc запускается, но когда я вставляю тег cffunction
внутри операторов if, он выдает ошибку. Вот код.Функция Coldfusion в условной логике
<cffunction name="grabInfo" access="remote" output="false" returntype="any">
<cfargument name="page" required="yes">
<cfargument name="pageSize" required="yes">
<cfargument name="gridsortcolumn" required="yes">
<cfargument name="gridsortdirection" required="yes">
<cfargument name="filtercolumn" required="no" default="">
<cfargument name="filter" required="no" default="">
<cfargument name="gridID" required="yes">
<cfif arguments.gridsortcolumn eq "">
<cfset arguments.gridsortcolumn = "PatientsName" />
<cfset arguments.gridsortdirection = "asc" />
</cfif>
<cfif ARGUMENTS.gridID EQ "1">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cffunction>
</cfif>
<cfif ARGUMENTS.gridID EQ "2">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cffunction>
</cfif>
Это даст мне ошибку Context validation error for the cfif tag.
, но как вы можете видеть, все заявления Cfif закрыты. Если взять первый аргумент и поместить его с закрытием cffunction
тега вне если заявления он будет работать, как так
<cfif ARGUMENTS.gridID EQ "1">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cfif>
<cfif ARGUMENTS.gridID EQ "2">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cfif>
</cffunction>
Причина мне нужно сделать это, потому что мне нужно несколько других функций выполняются, когда GridID EQ 2, поэтому мне нужно закрыть эту функцию и открыть ее следующим образом:
<cfif ARGUMENTS.gridID EQ "2">
<cfquery name="x" datasource="#dsn#">
<!--- .... --->
</cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cffunction>
<cffunction name="otherFunction">
<!--- .... --->
</cffunction>
</cfif>
* Причина, по которой мне нужно это делать * Нет, вы не делаете ;-). Вы вводите в заблуждение объявление функции и использование. Функции компонента должны быть определены спереди - не условно, т.е. в выражении 'cfif'. Используйте 'cfif', чтобы контролировать, какие из функций вы хотите * вызывать *, и когда. – Leigh