function __set($name, $data) { if (Validate::isCallable($data)) { $this->methods[$name] = $data; } else { $this->properties[$name] = $data; } return $this; }
protected final function buildElements($elements) { foreach ($elements as $name => &$element) { if (in_array($name, $this->wrappers) && is_array($element)) { foreach ($element as &$el) { if (is_object($el) && method_exists($el, 'html') && in_array(__CLASS__, class_parents($el))) { $el = $el->html(); } elseif (Validate::isCallable($el) && in_array(__CLASS__, class_parents($el))) { $el = call_user_func($el); } elseif (is_array($el)) { $el = $this->buildElements($el); } } } } return $elements; }
/** * @return bool */ protected function validateForm() { foreach ($this->getFormFields() as $name => $attr) { // Get field label $label = $this->getFieldLabel($name); if (isset($attr['validate'])) { if (Validate::isCallable($attr['validate'])) { call_user_func($attr['validate'], $attr, $name, $label); } elseif (preg_match("#^:([[:alnum:]]+)\$#", $attr['validate'], $match)) { if (Request::env('POST')->{$name}->val() !== Request::env('POST')->{$match[1]}->val()) { $this->setError($name, I18n::__('The field %s must be identical to %s.', '<strong>' . $label . '</strong>', '<strong>' . $this->getFieldLabel($match[1]) . '</strong>')); } } } } return !$this->hasErrors(); }