Thanks again :)

I'm still having a few problems, the ErrorHelper provided uses a
method of the HTML Helper which doesn't appear to exist - it outputs
by using $html->contentTag(), which doesn't work. I've looked through
the HTML Helper itself and it seems to be using output in the format
of $this->output($this->tags['fieldset'], $data1, $data2); etc...

Unfortunately the <li> tag which I need for displaying the error
messages is not in the var $tags array. I know I could modify the
ErrorHelper's output to put out straight HTML, which would work, but
is there a real Cake-y way to do this?

On Feb 8, 10:23 am, "mcgordon" <[EMAIL PROTECTED]> wrote:
> The problem is in the class name "Validation" which is the same as the
> core class name.  If you rename it the conflict goes away.
>
> You've got to change two things in the code, first the name of the
> class in the class definition (file validation.php).  The author's
> name is Evan so I renamed his class eValidation:
>
> "class eValidation" on line 26 of Validation.php
>
> Don't forget to rename the constructor on line 45:
>
> function eValidation(&$data, &$model)
>
> Next you have to change the name of the class where it gets
> instantiated.  In app_model.php look for the function invalid_fields
> that you added and change this line to include your new class name:
>
> $validation =& new eValidation($data, $this);
>
> it should work now.
>
> While we're at it, the other bugs I was talking about occur when the
> code passes the field to be validated through the _evaluate function
> twice. Look at this function below:
>
> function validatePattern($fieldName, $params)
> {
>         $pattern = $params['pattern'];
>         return $this->_evaluate(preg_match($pattern, $this->data[$this->name]
> [$fieldName]),
>                         "does not match pattern {$pattern}", $fieldName, 
> $params);
>
> }
>
> it validates the field against a user-supplied pattern and sends the
> result to the _evaluate function where the model->validationErrors are
> set.  Good so far.
>
> The following function is a convenience function so that you don't
> have to remember the regex for a valid word:
>
> function validateWord($fieldName, $params)
> {
>         $params['pattern'] = '/^\\w*$/';
>         return $this->_evaluate(!$this->validatePattern($fieldName, $params),
>                         "is not a valid word", $fieldName, $params);
>
> }
>
> it first runs the field through validatePattern() [which in turn runs
> it through _evaluate()] and then sends the inverse of the result
> through _evaluate again, resulting in the opposite answer to what
> you'd expect.
>
> If we follow the logic, for a given field containing valid data,
> validateWord() calls validatePattern() which calles _evaluate() with
> "true" as the first parameter (the regex matched for valid data).
> _evaluate() in turn returns true and so validatePattern() also returns
> true.
>
> now we run _evaluate again with (!true) as the first parameter.  this
> time _evaluate() fails and the error message is set, even though the
> field is valid. the problem is with the ! symbol that negates the
> first return value. By simply removing the ! the function returns true
> as expected and the field validates.
>
> This is true throughout the code wherever a convenience function is
> used to alias a more general function. The second time through
> _evaluate()  - which is done to allow for custom error messages - the
> validation fails.
>
> The following functions need to be changed:
> validateRequired
> validateWord
> validateInteger
> validateNumber
> validateEmail
> validateYear
>
> > I was almost tempted to
> > simply delete the standard Validation class and overwrite it with this
> > one, but that would cause other problems down the road, I'm sure.
>
> Bad Idea Jeans™  ;)
>
> Don't touch the core code unless you're using some kind of versioning
> system that will let you merge in the latest updates or you'll never
> remember all the places where you made changes. That goes double for
> now as they're adding new stuff to the trunk every day.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to cake-php@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to