Option C does seem to be your best bet. I don't see anything wrong
with something like this in AppModel:
function validateSingle($field, $value = null) {
$this->validate = array($field => $this->validate[$field]);
$this->data[$this->alias][$field] = $value;
return $this->validates();
}
Then you can just return the error messages at your leisure.
On Nov 2, 9:52 pm, pigeon <[email protected]> wrote:
> Hello everyone,
>
> let me quickly explain my situation and what i'm trying to achieve.
>
> I have a User model with 5 fields having validation rules, out of
> these 5, 3 are required ( required => true, and they also have the
> notEmpty rule )
>
> I would like to pre-validate each field, one by one, from the
> controller and give a JSON response. The reason for this, as you have
> probably already guessed, is that i'm validating dynamically, as the
> user fills in the form, before the actual submission. ( it's hooked to
> onblur on the input fields )
>
> It should look something like this:
> - user changes away from the input field ( onblur )
> - javascript takes the name & value of the field, does POST to my
> pre_validate action
> - the pre_validate action validates this single field and outputs the
> validation result in JSON
> - the javascript updates the form with validation error messages if
> required
>
> ( All this would be very handy ( and elegant ) when validating a field
> for isUnique, for example. But it also provides a single point of
> access to validation rules for scripts wanting to validate form data
> pre-submission )
>
> Removing "required" from any of my 3 mandatory fields is not an
> option, since i don't want to end up with forged posts passing
> validation without these fields. ( ie a user account with no
> password.. nasty )
>
> I have done some research here and on the web and found the following
> possible solutions:
>
> a, i remove the required flag from my required fields and check for
> them beforeSave. Nasty, breaks actual validation, not really what i'm
> looking for.
>
> b, i do "->validates()" with only one field "->set()" on the model,
> and filter the validation results. Running through all fields when i
> expect to have only a single field's data does not seem to be an
> elegant solution either.
>
> c, save the validation rules array for the single field i'm validating
> for and re-build User->validate with this single field for the
> validation-call. This seems to be the most promising way but i still
> consider this hacking.
>
> Here comes the question - Is this implemented on the Model? Is there a
> way i can execute validation rules for a single field ONLY? If it
> isn't ( i believe it isn't ) how would you get around this?
>
> thanks & regards,
> Andrew
>
> ps: i'm on 1.3
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---