I set it in my form class. I don't know if there's a global way to set it, but i wouldn't doubt it. You could also use a base form class like so:

class MF_Form
{
        public function __construct($options = null)
        {
                parent::__construct($options);
                $this->->setMethod('post')
                        ->addElementPrefixPath('MF_Filter', 'MF/Filter/', 
'filter')
                        ->addElementPrefixPath('MF_Validate', 'MF/Validate/', 
'validate');

        }

}                               

        


class Form_Application extends MF_Form
{
        public function __construct($options = null)
        {
                parent::__construct($options);
                $this->setName('application_form')
                        ->setDescription('This is my form')
                        ->setAction(URL.'/merchant/account/apply')
                        ->setAttrib('id', 'application-form');
                
                ...define elements... etc


Good luck!
EH
                


On Jan 5, 2009, at 1:12 PM, webPragmatist wrote:


Thanks!

This works great... Quick question, I couldn't find it in the manual...

a) is it required to set addPrefixPath()
b) if so how can I set it globally?


Edward Haber wrote:

I use a custom validator for this functionality. Add it to the
validation chain in the form model:

$confirmPassword = new Zend_Form_Element_Password("password_confirm");
        $confirmPassword->setLabel('Confirm Password')
                ->setDescription('Please re-enter your password.')
                ->addValidator('PasswordConfirm')
                ->addValidator('StringLength', false, array(5, 14))
                ->setAttribs(array('size'=>30))
                ->setRequired(true);
        $this->addElement($confirmPassword);

The custom validator goes in your apps lib. /library/MF/Validate/
PasswordConfirm.php.

This is some code i got off this list or on the Zend website that I
use. It assumes the password confirm field is called "password." I'm
sure a generic one could be made for all confirms.

<?php

require_once 'Zend/Validate/Abstract.php';

class MF_Validate_PasswordConfirm extends Zend_Validate_Abstract
{
        const NOT_MATCH = 'notMatch';
        
protected $_messageTemplates = array(self::NOT_MATCH => 'Passwords do
not match.');
        
        public function isValid($value, $context = null)
        {
                $value = (string) $value;
                $this->_setValue($value);
                
                if (is_array($context)) {
                        if (isset($context['password']) && ($value ==
$context['password'])) {
                                return true;
                        }
                } elseif (is_string($context) && ($value == $context)) {
                        return true;
                }
                
                $this->_error(self::NOT_MATCH);
                return false;
        }
}

Haven't tried the Dojo password box yet but looks cool.

EH


On Jan 5, 2009, at 12:14 PM, webPragmatist wrote:

Is it possible to pass the POST variable(s) once instead of twice
when using the identical validator?

What I have is a method in a model that checks a param which is
passed when the form is generated in the controller. Then the
controller (if the request is post) runs isValid($_POST).

This works fine I just wish there was a way to access the post
variable from the same $_POST array that is sent using isValid
instead of passing variables twice to the form object (model).

   public function getAccountCreateForm($postPass = null)
   {
       // Add a password form element
       $password = new
Zend_Dojo_Form_Element_PasswordTextBox('password');
       $password->setLabel('Password:')
                ->setRequired(true)
                ->setTrim(true)
                ->setInvalidMessage('Please provide a valid
password');
       $form->addElement($password);

       // Add a confirm password form element
$confirmPassword = new Zend_Dojo_Form_Element_PasswordTextBox(

'confirmPassword');
       $confirmPassword->setLabel('Confirm Password:')
                ->setRequired(true)
                ->setTrim(true)
                ->setInvalidMessage('Please provide a valid
password')
                ->addValidator('identical',
                   true,
                   array($postPass));
       $form->addElement($confirmPassword);
   }

View this message in context: Zend_Form / Identical Validator and
comparing form fields
Sent from the Zend Framework mailing list archive at Nabble.com.




--
View this message in context: 
http://www.nabble.com/Zend_Form---Identical-Validator-and-comparing-form-fields-tp21295103p21296134.html
Sent from the Zend Framework mailing list archive at Nabble.com.


Reply via email to