Esempio n. 1
0
 public function setRules(array $rules = array())
 {
     if (count($rules) == 0) {
         $rules = (array) ObjectModel::getRules($this);
     }
     // attach each rule to the relevant property
     foreach ($rules as $trigger => $rulesArray) {
         $parts = explode('/', $trigger);
         foreach ($rulesArray as $key => $rule) {
             // rules on properties
             if (isset($parts[2]) && ($property = $this->_dataObject->getProperty($parts[2])) !== false) {
                 $property->attach($rule, $parts[0] . '/' . $parts[1]);
                 unset($rules[$trigger][$key]);
                 /*
                  * @todo find  a way to also pass rules to whatever property is concerned
                  * ex: if the rules allows to compute data from a collection, any change to the collection
                  * members should trigger the rule.
                  */
             } else {
                 $this->attach($rule, $parts[0] . '/' . $parts[1]);
             }
         }
     }
     $this->_rules = $rules;
     return $this;
 }
Esempio n. 2
0
 public function setRules(array $rules = array())
 {
     if (count($rules) == 0) {
         $rules = (array) \t41\ObjectModel::getRules(get_class($this));
     }
     $doRules = array();
     foreach ($rules as $key => $rule) {
         /* if $rule is an array, targeted property contains an object and we need to delegate logic to data object */
         if (is_array($rule)) {
             $doRules[] = $rule;
             unset($rules[$key]);
         }
     }
     if (count($doRules) > 0) {
         $this->_dataObject->delegateRules($doRules);
     }
     $this->_rules = $rules;
     return $this;
 }