Paul
Paul

Reputation: 197

coldfusion cfsavecontent html page with dynamic variables

As a simple example of the problem:

<cfsavecontent variable = "pageOutput">
   <cfoutput>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
         <title>#page_title#</title>
      </head>
      <body>
         <cfdump var="#URL#">
      </body>
      </html>
   </cfoutput>
</cfsavecontent>

I save this page to disk. Then when I call this newly-generated page via the following URL:

http://blah/products.cfm?search_keyword=bathroom&search_category=451&search_province=Auckland

The dump doesn't display the newly-passed url vars.

I'm obviously missing something pretty basic here.

Upvotes: 0

Views: 8609

Answers (3)

Anthony Israel-Davis
Anthony Israel-Davis

Reputation: 56

I would be more inclined to hide that in a function which would read much nicer in your example you could call dumpVariable(url) and encapsulate that in a function. We actually had to do something similar by parsing custom tags from a database into a render function that used cfmodule for the actual implementation. I was pretty happy with the results and it was much easier to tell what was going on in the code than arbitrary character replacement.

Upvotes: 0

Daniel Sellers
Daniel Sellers

Reputation: 750

What you need to do is replace the opening or closing portion of the tag so that when it gets output you have a valid tag. Something like this:

<cfsavecontent variable="page">
 <cfset sCfO = "<" >
 <cfset sCfC = "</" >
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
     <title><cfoutput>#page_title#</cfoutput></title>
  </head>
  <body>
     <cfoutput>#sCFO#</cfoutput>cfdump var="#URL#">
     <cfoutput>#sCFO#</cfoutput>cfoutput>
          #URL.myMessage#
      <cfoutput>#sCFC#</cfoutput>cfoutput>
  </body>
  </html>

Hopefully that makes sense...

Upvotes: 1

Sergey Galashyn
Sergey Galashyn

Reputation: 6956

If I understand your explanations correctly, in your generated with cfsavecontent pagevariables are already substituted, so you have the static HTML in products.cfm. Try to open it in editor and review the code.

I have a question: what is the purpose of using cfsavecontent here? What are you trying to achieve? Looks like you may not need it at all, plain ol' CFML should do the job.

Upvotes: 0

Related Questions