/** * Parse message value * * @param string $key * @param sfValidatorBase $objField * * @return string */ private function parseMessageVal($key, sfValidatorBase $objField) { if ($objField instanceof sfValidatorSchema) { $retrunVal = ''; foreach ($objField->getFields() as $subKey => $subObjField) { $retrunVal .= $this->parseMessageVal($subKey, $subObjField); } return $retrunVal; } $field_options = $objField->getOptions(); $messages = $objField->getMessages(); $val = ""; // if the field options for this item is empty, don't include it if (empty($field_options[$key])) return ""; // var_dump(get_class($objField)); // var_dump($field_options); if (is_array($field_options[$key])) { // TODO sfValidatorBoolean // foreach ($field_options[$key] as $key => $val) { // if (empty($val)) { // continue; // } else { // var_dump($val);die('OK'); // } // } return ""; } if(!(isset($messages[$key]) || isset($messages[$this->parseMessageKey($key, $objField)]))) return ""; // find the actual error message $mapped_key = $this->parseMessageKey($key, $objField); if(isset($messages[$key])) { $val = $messages[$key]; } else if(isset($messages[$mapped_key])) { $val = $messages[$mapped_key]; } else { return; } // add slashes to ensure correct json output $val = addslashes($val); // replace any placeholder values // this is a nasty hack (see line 88 for the matching hackery) if(strpos($val, '%value%') !== false) { $val = '[[{ return \'' . str_replace('%value%', "' + $(elem).val() + '", $val) . '\';}]]'; } if(strpos($val, '%min_length%') !== false) { $val = str_replace('%min_length%', $field_options['min_length'], $val); } if(strpos($val, '%max_length%') !== false) { $val = str_replace('%max_length%', $field_options['max_length'], $val); } return $val; }