private function addNominalDiscountControl(BaseControl $priceControl) { $errorMessage = 'Nominal discount must be between 0 and original price.'; $control = $this->addText('nominalDiscount', 'Nominal discount'); $control->setType('number')->setAttribute('step', 'any')->setDefaultValue(0)->addRule(self::FLOAT, $errorMessage)->addRule(function (TextInput $input) use($priceControl) { return $input->getValue() >= 0 && $input->getValue() < $priceControl->getValue(); }, $errorMessage); if ($this->editedProduct !== null) { $control->setDefaultValue($this->editedProduct->getNominalDiscount()); } }