Hopefully a slightly better method... I've created a custom AppModel
that ensures that every field listed in the 'fieldList' during save
(whitelist) has all of its rules set to 'required'... and it will also
complain if the 'fieldList' isn't provided to the save() method.

<?php

class AppModel extends Model {

        function beforeValidate() {

                //--------------------------------------------------
                // Set all fields in the whitelist to be required

                        foreach ($this->whitelist as $cField) {

                                if (!isset($this->validate[$cField])) {

                                        
//--------------------------------------------------
                                        // There is no validation for this field

                                                continue;

                                } else if (is_string($this->validate[$cField])) 
{

                                        
//--------------------------------------------------
                                        // Simple string validation:
                                        //
                                        //   var $validate = array(
                                        //       'field' => 'notempty'
                                        //   );
                                        //
                                        
//--------------------------------------------------

                                                $rule = 
$this->validate[$cField];

                                                $this->validate[$cField] = 
array(
                                                                $rule => array(
                                                                                
'rule' => $rule,
                                                                                
'required' => true,
                                                                        ),
                                                        );

                                } else if 
(isset($this->validate[$cField]['rule'])) {

                                        
//--------------------------------------------------
                                        // Array for a single rule validation:
                                        //
                                        //  var $validate = array(
                                        //      'notEmpty' => array(
                                        //              'rule' => 'notEmpty',
                                        //              'message' => 'Your 
email address is required.',
                                        //          ),
                                        //  );
                                        //
                                        
//--------------------------------------------------

                                                
$this->validate[$cField]['required'] = true;

                                } else if (is_array($this->validate[$cField])) {

                                        foreach ($this->validate[$cField] as 
$cRuleName => $cRuleValue) {

                                                if (is_array($cRuleValue) && 
isset($cRuleValue['rule'])) {

                                                        
//--------------------------------------------------
                                                        // Array of rules 
validation:
                                                        //
                                                        //  var $validate = 
array(
                                                        //      'email' => 
array(
                                                        //              
'notEmpty' => array(
                                                        //                      
'rule' => 'notEmpty',
                                                        //                      
'message' => 'Your email address is
required.',
                                                        //                  ),
                                                        //          ),
                                                        //  );
                                                        //
                                                        
//--------------------------------------------------

                                                                
$this->validate[$cField][$cRuleName]['required'] = true;

                                                } else if 
(is_string($cRuleValue)) {

                                                        
//--------------------------------------------------
                                                        // Simple array 
validation:
                                                        //
                                                        //   var $validate = 
array(
                                                        //       'field' => 
array('notempty')
                                                        //   );
                                                        //
                                                        
//--------------------------------------------------

                                                                
$this->validate[$cField][$cRuleName] = array(
                                                                                
'rule' => $cRuleValue,
                                                                                
'required' => true,
                                                                        );

                                                }

                                        }

                                }


                        }

                //--------------------------------------------------
                // Valid

                        return true;

        }

        function beforeSave() {

                //--------------------------------------------------
                // Ensure the whitelist exists on save

                        if (!isset($this->whitelist) || 
!is_array($this->whitelist) || count
($this->whitelist) == 0) {
                                exit('Cannot submit this form without a 
whiteList/fieldList');
                        }

                //--------------------------------------------------
                // Valid

                        return true;

        }

}

?>

Check out the new CakePHP Questions site http://cakeqs.org and help others with 
their CakePHP related questions.

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

Reply via email to