public function onPreSetData(FormEvent $event) { $form = $event->getForm(); if ($this->account->isRothIraType() || $this->account->isTraditionalIraType()) { $form->add($this->factory->createNamed('distribution_method', 'choice', null, array('choices' => Distribution::getDistributionMethodChoices(), 'expanded' => true, 'multiple' => false, 'required' => false)))->add($this->factory->createNamed('federal_withholding', 'choice', null, array('choices' => Distribution::getFederalWithholdingChoices(), 'expanded' => true, 'multiple' => false, 'required' => false)))->add($this->factory->createNamed('state_withholding', 'choice', null, array('choices' => Distribution::getStateWithholdingChoices(), 'expanded' => true, 'multiple' => false, 'required' => false)))->add($this->factory->createNamed('federal_withhold_percent', 'percent', null, array('required' => false)))->add($this->factory->createNamed('federal_withhold_money', 'number', null, array('precision' => 2, 'grouping' => true, 'required' => false)))->add($this->factory->createNamed('state_withhold_percent', 'percent', null, array('required' => false)))->add($this->factory->createNamed('state_withhold_money', 'number', null, array('precision' => 2, 'grouping' => true, 'required' => false)))->add($this->factory->createNamed('residenceState', 'entity', null, array('class' => 'WealthbotAdminBundle:State', 'label' => 'State', 'empty_value' => 'Select a State', 'required' => false))); } }
/** * Validate state_withholding and child fields */ private function validateStateWithholding() { if ($this->form->has('state_withholding')) { $stateWithholding = $this->data->getStateWithholding(); if (!in_array($stateWithholding, array_keys(Distribution::getStateWithholdingChoices()))) { $this->form->get('state_withholding')->addError(new FormError('Choose an option.')); } elseif ($stateWithholding == Distribution::STATE_WITHHOLDING_TAXES) { $percentRate = $this->data->getStateWithholdPercent(); $moneyRate = $this->data->getStateWithholdMoney(); if (!is_numeric($percentRate) && !is_numeric($moneyRate)) { $this->form->get('state_withholding')->addError(new FormError('Please enter withhold taxes rate.')); } elseif (is_numeric($percentRate) && is_numeric($moneyRate)) { $this->form->get('state_withholding')->addError(new FormError('Please enter percent or money withhold taxes rate.')); } $this->data->setResidenceState(null); } elseif ($stateWithholding == Distribution::STATE_WITHHOLDING_RESIDENCE_STATE && !$this->data->getResidenceState()) { $this->form->get('residenceState')->addError(new FormError('Choose an option.')); $this->data->setStateWithholdPercent(null); $this->data->setStateWithholdMoney(null); } else { $this->data->setStateWithholdPercent(null); $this->data->setStateWithholdMoney(null); $this->data->setResidenceState(null); } } }