And is entirely wrong... well, no, it'll work, but it doesn't take
advantage of CakePHP 1.2 validation. The IBM tutorials are good, but
outdated now.
Richard, as you suspect, you're not supposed to be referencing
isUnique in a rule. But, you don't need to use it in the controller.
Here's how you're supposed to do it:
1. Create a new function "checkUnique" inside the model you want to
validate - or even in AppModel, if you're planning on using the
functionality across multiple models. (you can actually call the
function whatever you like)
2. In your validation rule, change "isUnique" to "checkUnique", or
whatever you called the function.
3. The checkUnique function should basically call the isUnique
function.
It takes a bit of figuring out, but stick with the 1.2 validation
method rather than the old fallback methods. It's well worth it in
terms of code clarity and ease of use.
Here's an example of how I use it to ensure an email address can only
be registered once:
function checkUnique($data) {
return $this->isUnique(array('email' => $this->data['User']
['email']));
}
It shouldn't take much to make that generic, I just went for the
simplest solution.
On Nov 29, 3:58 pm, sMAshdot <[EMAIL PROTECTED]> wrote:
> On 29 Nov., 13:40, RichardAtHome <[EMAIL PROTECTED]> wrote:
>
> > As a side note, I suspect isUnique might not meant to be referenced in
> > a rule and is meant to be referenced in the controller. If this is
> > true can someone point me towards some examples of how / where it
> > should be used?
>
> I'm quite new to CakePHP as well, but I check for uniqueness after
> validating
> the data.
>
> This example comes from the IBM CakePHP
> tutorialshttp://www.ibm.com/developerworks/views/opensource/libraryview.jsp?se...
>
> if ( $this->User->validates($this->data) )
> {
> if ( $this->User->findByname($this->data['User']['name']) )
> {
> $this->User->invalidate('name');
> $this->set('name_error', 'User already exists.');
> }
>
> }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" 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
-~----------~----~----~----~------~----~------~--~---