I think I would just have the form submit to itself.

At the top of the page, check if the form was submitted.  If so,
validate the data.  If there are any errors, store them in a list or
array (or CFC instance) and then redisplay the form.  By submitting the
form to itself, you can easily fill out the form fields with the
just-submitted data so the user doesn't have to type everything again.

Another alternative is to submit to an action page, do the same stuff,
but if there are errors, copy the form fields to the session scope and
go back to the form. 

-----Original Message-----
From: Ian Skinner [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, November 17, 2004 11:47 AM
To: CF-Talk
Subject: CFC form handling

I am stumped here.

I am trying to learn how to utilize the full power of CFC's in a better
practice way (working my way towards best practices).  I am building an
administrative application.  I have put the queries into a data CFC, my
business logic into its own CFC, and thus leaving the display code in
its own CFM file.

This has been working well so far, but I have found my self in a dark
alley and I can not see how to code myself out of it.  I'm looking for
some basic strategy suggestions on how to build this in a more
OO/multi-tier and less procedural way.

The path I have followed so far is something like this:

Form.cfm
This is just what it says, a file that contains a form.

App.cfc
This file is a middleman CFC that the form submits to using the
following structure.  My current thinking is that this file is doing the
validation and verification of the data submitted from the form
according to the business needs.
<form action="app.cfc"...>
       <input type="hidden" name="method" value="formMethod">
       ...
</form>

Data.cfc
This is the CFC that the App.cfc utilizes to actually get the data from
the form into the database.  It contains the database logic and SQL
statements.

The trouble I am experiencing is that the logic in the app.cfc has two
exits.  First of all, my understanding of best practices makes me feel
that this may be a bad result of itself, but I do not see a way to
rearrange the pieces of my code to eliminate this.  Secondly, even if I
accept the two exits from the App.cfc method, I can't figure a way to
actually make it work.

The problem is that the formMethod() function is checking the data from
the form, if the data is valid; it calls the appropriate method of the
data.cfc to get the data into the database.  But what do I do when the
data is invalid?  The program flow needs to somehow get back to the form
with information about why the data is invalid, so that the user can be
prompted to correct the errors.

Since the form has been submitted to the App.cfc that is where the logic
"pointer" is currently located.  In other words, if I don't do anything
to relocate and just finish processing, the URL of the browser will be
such as "http://aWebSite/app.cfc";.   So how can I get the location and
the error data back to the form.cfm file?  

I tried to store the error data in the session scope to persist it and
then us a <cflocation...>, but that does not seem to work.  When I dump
the session scope in the form file, it is unaware of any of the values
set in the app.cfc code.  I think I have run into this problem before.
It seems that if one submits forms to cfc methods for processing, this
cfc has a separate world of persistent variables.  I can set and output
values in application or session scope in the cfc, but not from files
that come after the cfc.

So can somebody guide me to a better way to organize my logic so that I
do not have the two exits currently required from the app.cfc
formMethod() function?  Or at least help me figure out how to get the
data from this method back to the originating form?

Thank you much.

--------------
Ian Skinner
Web Programmer
BloodSource
www.BloodSource.org
Sacramento, CA

"C code. C code run. Run code run. Please!"
- Cynthia Dunning

Confidentiality Notice:  This message including any attachments is for
the sole use of the intended
recipient(s) and may contain confidential and privileged information.
Any unauthorized review, use, disclosure or distribution is prohibited.
If you are not the intended recipient, please contact the sender and
delete any copies of this message. 





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:184682
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

Reply via email to