Update message after changing exception properties

This commit is contained in:
Henrique Moody 2015-10-21 04:14:11 -02:00
parent 29bdb0a9f6
commit 03c0bd03de
3 changed files with 33 additions and 5 deletions

View file

@ -110,14 +110,14 @@ class AbstractNestedException extends ValidationException implements NestedValid
public function setParam($name, $value)
{
parent::setParam($name, $value);
if ('translator' === $name) {
foreach ($this->getRelated(true) as $related) {
$related->setParam($name, $value);
}
}
parent::setParam($name, $value);
return $this;
}

View file

@ -201,9 +201,8 @@ class ValidationException extends InvalidArgumentException implements Validation
public function configure($name, array $params = [])
{
$this->setName($name);
$this->setParams($params);
$this->message = $this->getMainMessage();
$this->setId($this->guessId());
$this->setParams($params);
return $this;
}
@ -273,6 +272,8 @@ class ValidationException extends InvalidArgumentException implements Validation
$this->mode = $mode;
$this->template = $this->buildTemplate();
$this->buildMessage();
return $this;
}
@ -280,15 +281,19 @@ class ValidationException extends InvalidArgumentException implements Validation
{
$this->params[$key] = $value;
$this->buildMessage();
return $this;
}
public function setParams(array $params)
{
foreach ($params as $key => $value) {
$this->setParam($key, $value);
$this->params[$key] = $value;
}
$this->buildMessage();
return $this;
}
@ -305,6 +310,11 @@ class ValidationException extends InvalidArgumentException implements Validation
return $this;
}
private function buildMessage()
{
$this->message = $this->getMainMessage();
}
protected function buildTemplate()
{
$templateKey = $this->chooseTemplate();

View file

@ -0,0 +1,18 @@
--FILE--
<?php
require 'vendor/autoload.php';
use Respect\Validation\Validator as v;
try {
v::not(v::alnum())->check('abc123');
} catch (Exception $exception) {
$exception->setParam('translator', function() {
return '{{name}} não deve conter letras (a-z) ou dígitos (0-9)';
});
echo $exception->getMessage();
}
?>
--EXPECTF--
"abc123" não deve conter letras (a-z) ou dígitos (0-9)