calculatorManager = $calculatorManager; } /** Výchozí vykreslovací metoda tohoto presenteru. */ public function renderDefault(){ // Předání výsledku do šablony. $this->template->result = $this->result; } /** * Vrátí formulář kalkulačky. * @return Form formulář kalkulačky */ protected function createComponentCalculatorForm(){ $form = new Form; // Získáme existující operace kalkulačky a dáme je do výběru operací. $form->addRadioList('operation', 'Operace:', $this->calculatorManager->getOperations()) ->setDefaultValue(CalculatorManager::ADD) ->setRequired(self::FORM_MSG_REQUIRED); $form->addText('x', 'První číslo:') ->setType('number') ->setDefaultValue(0) ->setRequired(self::FORM_MSG_REQUIRED) ->addRule(Form::INTEGER, self::FORM_MSG_RULE); $form->addText('y', 'Druhé číslo:') ->setType('number') ->setDefaultValue(0) ->setRequired(self::FORM_MSG_REQUIRED) ->addRule(Form::INTEGER, self::FORM_MSG_RULE) // Ošetříme dělení nulou. ->addConditionOn($form['operation'], Form::EQUAL, CalculatorManager::DIVIDE) ->addRule(Form::PATTERN, 'Nelze dělit nulou.', '^[^0].*'); $form->addSubmit('calculate', 'Spočítej výsledek'); $form->onSuccess[] = [$this, 'calculatorFormSucceeded']; return $form; } /** * Funkce se vykonaná při úspěšném odeslání formuláře kalkulačky a zpracuje odeslané hodnoty. * @param Form $form formulář kalkulačky * @param ArrayHash $values odeslané hodnoty formuláře */ public function calculatorFormSucceeded($form, $values) { // Necháme si vypočítat výsledek podle zvolené operace a zadaných hodnot. $this->result = $this->calculatorManager->calculate($values->operation, $values->x, $values->y); } }