public function setValues($values, $erase = FALSE)
{
if ($values instanceof \Traversable) {
$values = iterator_to_array($values);
} elseif (!is_array($values)) {
throw new Nette\InvalidArgumentException(sprintf('First parameter must be an array, %s given.', gettype($values)));
}
foreach ($this->getComponents() as $name => $control) {
if ($control instanceof IControl) {
if (array_key_exists($name, $values)) {
$control->setValue($values[$name]);
} elseif ($erase) {
$control->setValue(NULL);
}
} elseif ($control instanceof self) {
if (array_key_exists($name, $values)) {
$control->setValues($values[$name], $erase);
} elseif ($erase) {
$control->setValues([], $erase);
}
}
}
return $this;
}