Re: Re: Use beforeSave() for validation and display error message
Ashwani Singh <[email protected]>
| Newsgroups | gmane.comp.cms.farcry.devel |
|---|---|
| Message-ID | <CA+hyrYC6iN251bZMw2a5x9jmbvftK=ff8w5ANXvmJKCAc5-XmQ@mail.gmail.com> |
try to use <cfimport taglib="/farcry/core/tags/formtools/" prefix="ft" /> instead of <cfimport taglib="/farcry/core/tags/wizard/" prefix="wiz" /> and add <ft:serverSideValidation /> before <wiz:processwizard excludeAction="Cancel"> in Edit Function. server side validation working only in form not in wizard. (I am using farcry 6.2.8) On Wed, Aug 28, 2013 at 12:07 PM, Xiaofeng Liu <[email protected]>wrote: > I'm using 6-0-15. Currently I could not get server side validation fully > working. I have to put a workaround that is to abort execution within the > validation method and output the validation message. Otherwise, after the > validation method's execution, it just ignored what was set in the > stResults. > > > On Wed, Aug 28, 2013 at 6:36 PM, Chris Kent <[email protected]> wrote: > >> What version of FarCry are you using? >> >> Chris. >> >> >> On Wednesday, 28 August 2013 01:58:43 UTC+1, Xiaofeng Liu wrote: >> >>> Hi, >>> >>> As Chris Kent suggested, I actually took a copy of the code in >>> 'ftValidateUserID' method in /core/packages/types/farUser.**cfc and >>> adjusted it to do my checking logic for username. The validation method did >>> accept the same arguments as those ones in core and when I dumped the >>> result structure it correctly set the bSuccess to 'false' and the error >>> message accordingly when validation failed. However, after that it ignored >>> the result and still saved the type record with a duplicate username. I >>> have been stuck on this one for quite a while. It looks like something is >>> missing here. >>> >>> Code is as below: >>> >>> <cfproperty ftseq="50" ftFieldSet="Login" type="string" >>> ftLabel="Username" name="username" ftType="string" ftValidation="**required" >>> bLabel="true"> >>> >>> >>> >>> <cffunction name="ftValidateUsername" access="public" output="true" >>> returntype="struct" hint="This will return a struct with bSuccess and >>> stError"> >>> <cfargument name="objectid" required="true" type="string" hint="The >>> objectid of the object that this field is part of."> >>> <cfargument name="typename" required="true" type="string" hint="The >>> name of the type that this field is part of."> >>> <cfargument name="stFieldPost" required="true" type="struct" hint="The >>> fields that are relevent to this field type."> >>> <cfargument name="stMetadata" required="true" type="struct" hint="This >>> is the metadata that is either setup as part of the type.cfc or overridden >>> when calling ft:object by using the stMetadata argument."> >>> <cfset var stResult = structNew()> >>> <cfset var qDuplicate = queryNew("blah")> >>> <cfset stResult = createObject("component", >>> application.formtools["field"]**.packagePath).passed(value=**stFieldPost.Value) >>> /> >>> <!--- --------------------------- ---> >>> <!--- Perform any validation here ---> >>> <!--- --------------------------- ---> >>> <cfquery datasource="#application.dsn#" name="qDuplicate"> >>> SELECT objectid from userProfile >>> WHERE upper(username) = '#ucase(stFieldPost.Value)#' >>> </cfquery> >>> <cfif qDuplicate.RecordCount> >>> <!--- DUPLICATE USERNAME ---> >>> <cfset stResult = createObject("component", >>> application.formtools["field"]**.packagePath).failed(value="#**arguments.stFieldPost.value#", >>> message="The username you have selected is already taken.") /> >>> <!--- <cfdump var="#stResult#"><cfabort> ---> >>> </cfif> >>> <!--- ----------------- ---> >>> <!--- Return the Result ---> >>> <!--- ----------------- ---> >>> <cfreturn stResult> >>> </cffunction> >>> >>> >>> >>> >>> On Wed, Aug 21, 2013 at 10:11 AM, Blair McKenzie <[email protected]>wrote: >>> >>>> Take a look at the formtool components in core (/packages/formtools). >>>> All validation functions accept the same arguments and should return the >>>> same results as the ones those components have. >>>> >>>> Blair >>>> >>>> >>>> On Wed, Aug 21, 2013 at 9:18 AM, Xiaofeng Liu <[email protected]>wrote: >>>> >>>>> Does anyone have an idea how exactly ftValidate*PropertyName* method >>>>> work? >>>>> >>>>> I'm just wondering did I miss any steps to get the validation error >>>>> displayed within the webtop or is this a bug in FarCry? >>>>> >>>>> Any thoughts would be much appreciated. >>>>> >>>>> >>>>> >>>>> On Tue, Aug 20, 2013 at 3:02 PM, Xiaofeng Liu <[email protected]>wrote: >>>>> >>>>>> Hi Chris, >>>>>> >>>>>> Thanks for pointing to the use of form tools validation methods. >>>>>> However, how would I get the error message displayed on my custom type edit >>>>>> form? >>>>>> >>>>>> I have the property set to: >>>>>> >>>>>> <cfproperty ftseq="50" ftFieldSet="Login" type="string" >>>>>> ftLabel="Username" name="username" ftType="string" ftValidation="required" >>>>>> bLabel="true"> >>>>>> >>>>>> Then I have my validation method as: >>>>>> >>>>>> <cffunction name="ftValidateUsername" access="public" output="true" >>>>>> returntype="struct" hint="This will return a struct with bSuccess and >>>>>> stError"> >>>>>> <cfargument name="objectid" required="true" type="string" hint="The >>>>>> objectid of the object that this field is part of."> >>>>>> <cfargument name="typename" required="true" type="string" hint="The >>>>>> name of the type that this field is part of."> >>>>>> <cfargument name="stFieldPost" required="true" type="struct" >>>>>> hint="The fields that are relevent to this field type."> >>>>>> <cfargument name="stMetadata" required="true" type="struct" >>>>>> hint="This is the metadata that is either setup as part of the type.cfc or >>>>>> overridden when calling ft:object by using the stMetadata argument."> >>>>>> <cfset var stResult = structNew()> >>>>>> <cfset var qDuplicate = queryNew("blah")> >>>>>> <cfset stResult = createObject("component", >>>>>> application.formtools["field"]**.packagePath).passed(value=**stFieldPost.Value) >>>>>> /> >>>>>> <!--- --------------------------- ---> >>>>>> <!--- Perform any validation here ---> >>>>>> <!--- --------------------------- ---> >>>>>> <cfquery datasource="#application.dsn#" name="qDuplicate"> >>>>>> SELECT objectid from userProfile >>>>>> WHERE upper(username) = '#ucase(stFieldPost.Value)#' >>>>>> </cfquery> >>>>>> <cfif qDuplicate.RecordCount> >>>>>> <!--- DUPLICATE USERNAME ---> >>>>>> <cfset stResult = createObject("component", >>>>>> application.formtools["field"]**.packagePath).failed(value="#**arguments.stFieldPost.value#", >>>>>> message="The username you have selected is already taken.") /> >>>>>> <!--- <cfdump var="#stResult#"><cfabort> ---> >>>>>> </cfif> >>>>>> <!--- ----------------- ---> >>>>>> <!--- Return the Result ---> >>>>>> <!--- ----------------- ---> >>>>>> <cfreturn stResult> >>>>>> </cffunction> >>>>>> >>>>>> If I dump out the stResult, I can see ftValidateUsername is invoked >>>>>> and it correctly detected the duplicates and set the error message: >>>>>> >>>>>> struct BSUCCESS false STERROR struct CLASS validation-advice >>>>>> MESSAGE The username you have selected is already taken. VALUE >>>>>> flyingturtle123 >>>>>> >>>>>> However, without abort execution, it still saved the record and not >>>>>> displaying the validation message anywhere. >>>>>> >>>>>> Am I missing sth here? >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Mon, Aug 19, 2013 at 6:42 PM, Chris Kent <[email protected]>wrote: >>>>>> >>>>>>> You would probably be better off using a validate method inside your >>>>>>> content type. you can set these to validate individual properties. Default >>>>>>> is to name the function "ftValidate+propertyname", e.g. ftValidateUserID >>>>>>> >>>>>>> Look at ftValidateUserID in /core/packages/types/farUser.**cfc for >>>>>>> an example to check for unique userID. >>>>>>> >>>>>>> Chris >>>>>>> >>>>>>> >>>>>>> On Monday, 19 August 2013 09:02:46 UTC+1, Xiaofeng Liu wrote: >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> Within webtop on a custom type, if I'd like to use beforeSave() to >>>>>>>> check, for example the uniqueness of username before my type record gets >>>>>>>> saved, how do I bring back that validation message to display on the farcry >>>>>>>> scaffolded list view or maybe the add/edit view? >>>>>>>> >>>>>>>> -- >>>>>>>> Best regards, >>>>>>>> >>>>>>>> Xiaofeng >>>>>>>> >>>>>>> -- >>>>>>> You received this message cos you are subscribed to "farcry-dev" >>>>>>> Google group. >>>>>>> To post, email: farcr...-/[email protected] >>>>>>> To unsubscribe, email: farcry-dev+...@**googlegroups.com >>>>>>> >>>>>>> For more options: http://groups.google.com/**group/farcry-dev<http://groups.google.com/group/farcry-dev> >>>>>>> ------------------------------**-- >>>>>>> Follow us on Twitter: http://twitter.com/farcry >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "farcry-dev" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to farcry-dev+...@**googlegroups.com. >>>>>>> >>>>>>> For more options, visit https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>>>> . >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Best regards, >>>>>> >>>>>> Xiaofeng,^_^ >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Best regards, >>>>> >>>>> Xiaofeng,^_^ >>>>> >>>>> -- >>>>> You received this message cos you are subscribed to "farcry-dev" >>>>> Google group. >>>>> To post, email: farcr...-/[email protected] >>>>> To unsubscribe, email: farcry-dev+...@**googlegroups.com >>>>> >>>>> For more options: http://groups.google.com/**group/farcry-dev<http://groups.google.com/group/farcry-dev> >>>>> ------------------------------**-- >>>>> Follow us on Twitter: http://twitter.com/farcry >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "farcry-dev" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to farcry-dev+...@**googlegroups.com. >>>>> >>>>> For more options, visit https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>> . >>>>> >>>> >>>> -- >>>> You received this message cos you are subscribed to "farcry-dev" Google >>>> group. >>>> To post, email: farcr...-/[email protected] >>>> To unsubscribe, email: farcry-dev+...@**googlegroups.com >>>> >>>> For more options: http://groups.google.com/**group/farcry-dev<http://groups.google.com/group/farcry-dev> >>>> ------------------------------**-- >>>> Follow us on Twitter: http://twitter.com/farcry >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "farcry-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to farcry-dev+...@**googlegroups.com. >>>> >>>> For more options, visit https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>> . >>>> >>> >>> >>> >>> -- >>> Best regards, >>> >>> Xiaofeng,^_^ >>> >> -- >> You received this message cos you are subscribed to "farcry-dev" Google >> group. >> To post, email: farcry-dev-/[email protected] >> To unsubscribe, email: farcry-dev+unsubscribe-/[email protected] >> For more options: http://groups.google.com/group/farcry-dev >> -------------------------------- >> Follow us on Twitter: http://twitter.com/farcry >> --- >> You received this message because you are subscribed to the Google Groups >> "farcry-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to farcry-dev+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] >> For more options, visit https://groups.google.com/groups/opt_out. >> > > > > -- > Best regards, > > Xiaofeng,^_^ > > -- > You received this message cos you are subscribed to "farcry-dev" Google > group. > To post, email: farcry-dev-/[email protected] > To unsubscribe, email: farcry-dev+unsubscribe-/[email protected] > For more options: http://groups.google.com/group/farcry-dev > -------------------------------- > Follow us on Twitter: http://twitter.com/farcry > --- > You received this message because you are subscribed to the Google Groups > "farcry-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to farcry-dev+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message cos you are subscribed to "farcry-dev" Google group. To post, email: farcry-dev-/[email protected] To unsubscribe, email: farcry-dev+unsubscribe-/[email protected] For more options: http://groups.google.com/group/farcry-dev -------------------------------- Follow us on Twitter: http://twitter.com/farcry --- You received this message because you are subscribed to the Google Groups "farcry-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to farcry-dev+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/groups/opt_out.