Yes I agree after thinking about it the only edits I will make is like you
say formatting data like a phone number or making names, city uppercase for
consistency.

 

Dave

 

From: [email protected] [mailto:[email protected]] On Behalf
Of Reuben
Sent: Tuesday, November 26, 2013 8:45 PM
To: [email protected]
Subject: Re: Best Practise - beforeValidate()

 

Usually, it's better to report the validation error, and leave it at that.
Altering the data to suite a validation rule could lead to issues down the
line.

 

There are some cases where you might want to manipulate data before
validation.  

 

For example, a controller that accepts a phone number, and stores it in a
model.  The model may validate on one specific format (lets say, no spaces,
and an international format), however, the controller may accept a variety
of formats (spaces, local formats, parenthesis, dashes, etc).  Then you have
the issue of automatic transformation, and if that transformation will be
reflected to the user if the form should not validated.

 

For these steps, you may want to transform the value in the controller
(though have the transform function on the model), and save the altered
value to the request, before calling validate on the specific format.

 

For this particular example, you could also use a behaviour to automatically
convert the phone number to different formats, depending on system
requirements (either via a stored field indicating the format on the model,
or simply attaching the behaviour to the model from the controller).

 

But that's a lot of messing around, and far removed your example.  For me,
the best practice is to keep it simple, and not to alter the data, unless
specifically requested by the key user or project requirements.

 

Regards

Reuben Helms

On Saturday, 23 November 2013 11:15:54 UTC+10, advantage+ wrote:

I know that. 

I can simply set the validation to a-z and return the error to the user
saying reason why error.

 

I am asking is it better to simply remove it in beforeValidate() then try to
save it or simply skip beforeValidate() and send all the entered data direct
to validation.

 

User enters $data['city'] = N3W Y0rk, now that's not a real city so remove
the 3 and the zero in before validate or just bypass it all together.

 

That's all.

 

Thanks,

 

Dave

 

From: [email protected] <javascript:>
[mailto:[email protected] <javascript:> ] On Behalf Of Charles
Blackwell
Sent: Friday, November 22, 2013 9:31 PM
To: [email protected] <javascript:> 
Subject: Re: Best Practise - beforeValidate()

 

You could use validation and create a custom method to validate to your
specification.

http://book.cakephp.org/2.0/en/models/data-validation.html#custom-validation
-rules

On Friday, 22 November 2013 18:43:34 UTC-5, advantage+ wrote:

What is the best way when saving data for example take city or first name
field. 

You want it to only be a-z and a space - or.(period)

 

Should you in beforeValidate do a preg_replace and remove anything that you
do not want then save(attempt) it or simply use the validation rules to
check and save / return false explaining why?

 

Just curious as to how people approach this and reasons for doing it either
way.

 

Thanks,

Dave

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
--- 
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected] <javascript:> .
To post to this group, send email to [email protected] <javascript:>
.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
--- 
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to