Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Coldfusion function within conditional logic

Tags:

coldfusion

I am having an issue with functions inside my cfc. They are acting funny when I try to introduce conditional logic to assign a query to the grid. Basically in the URL I will have ?GRIDID=x and it will tell the cfc which function to run, but when I nest the closing cffunction tag inside of the if statements, it throws an error. Here is the code.

<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>

This will give me the error Context validation error for the cfif tag. but as you can see, all the cfif statements are closed. If I take the first argument and place it with the closing cffunction tag outside of the if statement it will work, like so

<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>

The reason I need to do this is because I need several other functions run when GridID EQ 2 as well, so I need to close the function and open another as follows

<cfif ARGUMENTS.gridID EQ "2">
<cfquery name="x" datasource="#dsn#">
    <!--- .... --->
  </cfquery>
<cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
</cffunction>

<cffunction name="otherFunction">
    <!--- .... --->
</cffunction>
</cfif>
like image 759
bWF800 Avatar asked Aug 03 '26 01:08

bWF800


1 Answers

Add additional functions in your component.

<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)>
  </cfif>

  <cfif ARGUMENTS.gridID EQ "2">
    <cfquery name="x" datasource="#dsn#">
      <!--- .... --->
    </cfquery>
    <!--- call your other functions --->
    <cfset otherFunction(arg1, arg2)>
    <cfset anotherFunction(arg1, arg2)>
    <cfreturn QueryConvertForGrid(qGrabInfo, Arguments.page, Arguments.pagesize)>
  </cfif>
</cffunction>

New functions in same component

<cffunction name="otherFunction" access="remote" output="false" returntype="any">
  <cfargument name="arg1">
  <cfargument name="arg2">
  <!--- do things --->
</cffunction>

<cffunction name="anotherFunction" access="remote" output="false" returntype="any">
  <cfargument name="arg1">
  <cfargument name="arg2">
  <!--- do things --->
</cffunction>
like image 133
Matt Busche Avatar answered Aug 05 '26 15:08

Matt Busche



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!