public function fireEvents()
{
if (!$this->isSubmitted()) {
return;
} elseif (!$this->getErrors()) {
$this->validate();
}
if ($this->submittedBy instanceof ISubmitterControl) {
if ($this->isValid()) {
$this->submittedBy->onClick($this->submittedBy);
} else {
$this->submittedBy->onInvalidClick($this->submittedBy);
}
}
if (!$this->isValid()) {
$this->onError($this);
} elseif ($this->onSuccess !== NULL) {
if (!is_array($this->onSuccess) && !$this->onSuccess instanceof \Traversable) {
throw new Nette\UnexpectedValueException('Property Form::$onSuccess must be array or Traversable, ' . gettype($this->onSuccess) . ' given.');
}
foreach ($this->onSuccess as $handler) {
$params = Nette\Utils\Callback::toReflection($handler)->getParameters();
$values = isset($params[1]) ? $this->getValues($params[1]->isArray()) : NULL;
Nette\Utils\Callback::invoke($handler, $this, $values);
if (!$this->isValid()) {
$this->onError($this);
break;
}
}
}
$this->onSubmit($this);
}