Beispiel #1
0
 /**
  * @param string|array $field
  * @param mixed $value
  * @param callable|null $callback
  *
  * @return mixed
  */
 public function validate($field, $value, callable $callback = null)
 {
     $key = $field;
     if (is_array($field)) {
         $key = key($field);
         $field = current($field);
     }
     if ($callback !== null) {
         $value = $callback($value);
     }
     while (!empty($this->stack)) {
         $item = array_shift($this->stack);
         if (false === ($validator = $this->collection->get($item['name']))) {
             throw new \RuntimeException('Unknown validator `' . $item['name'] . '`');
         }
         $arguments = $validator->getFormattedArgs($item['arguments']);
         if ($validator->validate($value, $arguments)) {
             continue;
         }
         if (!isset($arguments['field'])) {
             $arguments['field'] = $field;
         }
         if (!isset($arguments['value'])) {
             $arguments['value'] = is_array($value) ? var_export($value, true) : $value;
         }
         $this->stack = array();
         $error = isset($item['error']) ? $item['error'] : $validator->getError();
         $this->errors[$key] = $this->placeholder->replace($error, $arguments);
         break;
     }
     return $value;
 }