Nette\Forms\Validator::formatMessage PHP Метод

formatMessage() публичный статический Метод

public static formatMessage ( Rule $rule, $withValue = TRUE )
$rule Rule
    public static function formatMessage(Rule $rule, $withValue = TRUE)
    {
        $message = $rule->message;
        if ($message instanceof Nette\Utils\IHtmlString) {
            return $message;
        } elseif ($message === NULL && is_string($rule->validator) && isset(static::$messages[$rule->validator])) {
            $message = static::$messages[$rule->validator];
        } elseif ($message == NULL) {
            // intentionally ==
            trigger_error("Missing validation message for control '{$rule->control->getName()}'.", E_USER_WARNING);
        }
        if ($translator = $rule->control->getForm()->getTranslator()) {
            $message = $translator->translate($message, is_int($rule->arg) ? $rule->arg : NULL);
        }
        $message = preg_replace_callback('#%(name|label|value|\\d+\\$[ds]|[ds])#', function ($m) use($rule, $withValue) {
            static $i = -1;
            switch ($m[1]) {
                case 'name':
                    return $rule->control->getName();
                case 'label':
                    return $rule->control instanceof Controls\BaseControl ? $rule->control->translate($rule->control->caption) : NULL;
                case 'value':
                    return $withValue ? $rule->control->getValue() : $m[0];
                default:
                    $args = is_array($rule->arg) ? $rule->arg : [$rule->arg];
                    $i = (int) $m[1] ? (int) $m[1] - 1 : $i + 1;
                    return isset($args[$i]) ? $args[$i] instanceof IControl ? $withValue ? $args[$i]->getValue() : "%{$i}" : $args[$i] : '';
            }
        }, $message);
        return $message;
    }

Usage Example

Пример #1
0
 /**
  * Validates against ruleset.
  * @return bool
  */
 public function validate()
 {
     foreach ($this as $rule) {
         $success = $this->validateRule($rule);
         if ($success && $rule->branch && !$rule->branch->validate()) {
             return FALSE;
         } elseif (!$success && !$rule->branch) {
             $rule->control->addError(Validator::formatMessage($rule, TRUE));
             return FALSE;
         }
     }
     return TRUE;
 }
All Usage Examples Of Nette\Forms\Validator::formatMessage