Parameter 1 Of Function SetVariable, Which Is Now FORM., Must Be A Syntactically Valid Variable Name

Posted December 23, 2008 at 9:53 AM by Ben Nadel

Tags: ColdFusion

Do you ever just have an error that is a pain to debug and once you debug it, you feel like total loser for even letting it be an error in the first place? Yeah, well that happened to me yesterday. I was updating a page when I started to get this ColdFusion error:

Parameter 1 of function SetVariable, which is now FORM., must be a syntactically valid variable name.

Now, normally, an error like this would be accompanied by a bunch of other information; however, since I was working remotely using Dreamweaver (don't get me started), the site I was editing did not have robust error reporting turned on. As such, I only got the above text with no template or line information.

Without the additional debugging information, I started to look for code based on the given error; I started to look for SetVariable() method calls. There were none! So, the next thing I started to do was comment out sections of the code and then re-running the page. After about 5 minutes, I narrowed it down to this line of code:

  • <cfparam name="FORM." type="string" default="" />

Oops! Looks like I was copy-n-pasting a bunch of new CFParam tags and forgot to fill in the last one.

First, this is a poor error. It should probably have told me that the NAME attribute of ColdFusion's CFParam tag was not a syntactically valid variable name; that would have been much more meaningful. But, aside from that, the error itself is really interesting because it gives us some insight into how the CFParam tag might work. If I had to hazard a guess, I would say it looks something like this:

  • <cfif NOT IsDefined( "CALLER.#ATTRIBUTES.Name#" )>
  •  
  • <cfset SetVariable(
  • "CALLER.#ATTRIBUTES.Name#",
  • ATTRIBUTES.Default
  • ) />
  •  
  • </cfif>

Of course, the ColdFusion CFParam tag does type validation as well, so that would have to be in there; but I am just guessing based on the fact that this is throwing a SetVariable() error. It looks like they need better type checking on the Name attribute.



Reader Comments

Dec 23, 2008 at 7:39 PM // reply »
110 Comments

I always enjoy trying to find the error when there is a missing closing cfif tag. CF gets really confused and states that there is a missing cfoutput, or some such other thing (even with line numbers that don't have anything to do with the cfif). I usually end up cfaborting sections of the page until I narrow down the error :)


Dec 24, 2008 at 9:31 PM // reply »
10,640 Comments

@Gareth,

Yeah, missing tags can be tough. If I have a CFLoop that contains a CFIF, I sometimes end the CFLoop with a double CFIF :)


Dec 26, 2008 at 8:58 PM // reply »
12 Comments

I also find trouble with tags that have closing tags, but at the same time do not require them. E.g:

<cftransaction /> can also be <cftransaction></cftransaction>
<cfinvoke /> can also be <cfinvoke></cfinvoke>

There are a few more tags like this. They work self-closed, or with a closing tag depending on the usage. Can be troubling sometimes! That's also ONE of the arguments I have FOR using the self-closing />. So that you can SEE straight away what its usage may be.

Anyone else agree?

Mikey :)


Dec 26, 2008 at 10:03 PM // reply »
10,640 Comments

@Mikey,

I think 100% that self-closing tags should ALWAYS be used when applicable. Nothing boils my blood MORE than seeing this:

<cfmodule template="">

This is the *worst* when used as a Header / Footer include because I never know if is wraps content as in:

<cfmodule>
... content ....
</cfmodule>

... or is merely acting as an "include" until I can scroll down to the bottom and find the matching tag. Now, if the self-closing tag was used, it would be immediately evident if the tag wrapped tags!

Arrrrg! :)


Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
InVision App - Prototyping Made Beautiful With Prototyping Tools Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
Feb 12, 2012 at 3:37 AM
Learning ColdFusion 8: CFImage Part III - Watermarks And Transparency
Hi Ben, Just to ask currently it is placed bottom right corner, if i need to replace the same rendered image on the bottom left side or in the bottom center, how that can be calculated. bottom ce ... read »
Feb 11, 2012 at 9:29 PM
Use jQuery's SlideDown() With Fixed-Width Elements To Prevent Jumping
I can't say how glad I am that I found your post. Thank you very much. ... read »
Feb 10, 2012 at 7:21 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
Update! Instead of $(eval(options.insertAfter)).after(data['insertData']); I now use: var ajaxNode = document.createElement('span'); var parent = $(eval(options.insertAfter))[0].parentNode; ... read »
Feb 10, 2012 at 6:18 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
encountered this same, what I consider, jQuery bug last week. I'm building a site in which I load some content via AJAX. This content contains Linkedin share button placeholders which Linkedin API ne ... read »
Feb 10, 2012 at 11:30 AM
Cross-Origin Resource Sharing (CORS) AJAX Requests Between jQuery And Node.js
After you understand the concepts here, this is an awesome cheatsheet for enabling CORS in just about anything http://enable-cors.org/ ... read »
JM
Feb 10, 2012 at 9:10 AM
My Safari Browser SQLite Database Hello World Example
@Amy, Here is a very good tutorial on how to use JOIN: http://www.sqltutorial.org/sqljoin-innerjoin.aspx ... read »
Feb 10, 2012 at 4:42 AM
Building A Twitter-Inspired RESTful API Architecture In ColdFusion
This is great, very useful Ben. I spotted a small typo in the api.cgm listing: <cfthrow type="Unauthroized" /> Cheers Stefan ... read »
Feb 9, 2012 at 10:35 PM
CFDirectory Filtering Uses Pipe Character For Multiple Filters (Thanks Steve Withington)
I was wondering if there would be a filter you could apply so that you got everything but what you included in the filter. As in show me all docs that are not a .pdf. ... read »