Kdyby/FormsReplicator – problém v editaci formuláře s odebráním
- kiCkZ
- Člen | 153
Zdravim,
mam formulář s dynamickými prvky, ale jakmile přejdu do editace a dám 2× odebrat položku, tak se mi jedna přidá i přesto,že ještě 2 existují. Když dám odeslat(Uložit obchodní případ) v tomto stavu, tak mi to začné dávat hlášku ohledně nevyplněné položky.
Formulář:
<?php
$businessCaseItems = $form->addDynamic('businessCaseItems', function (Container $businessCaseItem) use ($removeEvent) {
$businessCaseItem->addHidden('id');
$businessCaseItem->addText('name', 'Jméno položky - krátké')
->setAttribute('class', 'form-control')
->addConditionOn($this->cost_exhibit, Form::EQUAL, FALSE)
->setRequired('%label nebylo vylněno');
$businessCaseItem->addInteger('price', 'Cena bez daně')
->setAttribute('class', 'form-control')
->addConditionOn($this->cost_exhibit, Form::EQUAL, FALSE)
->setRequired('%label není vylněna');
$businessCaseItem->addInteger('amount', 'Množství')
->setAttribute('class', 'form-control')
->addConditionOn($this->cost_exhibit, Form::EQUAL, FALSE)
->setRequired('%label není vylněno');
$businessCaseItem->addSelect('taxes_id', 'Sazba daně', $this->taxRepository->fetchPairs())
->setAttribute('class', 'form-control')
->setValue('21%')
->addConditionOn($this->cost_exhibit, Form::EQUAL, FALSE)
->setRequired('Nebyla vybrána sazba daně');
$businessCaseItem->addSubmit('remove', 'Odstranit položku')
->setAttribute('class', 'btn btn-default')
->setValidationScope(array())
->onClick[] = $removeEvent;
}, 1);
$businessCaseItems->addSubmit('addItem', 'Přidat položku')
->setValidationScope(array())
->onClick[] = [$this, 'businessCaseFromItemAdd'];
$form->addSubmit('send', 'Uložit obchodní případ')
->setAttribute('class', 'btn btn-primary btn-main pull-right')
->onClick[] = [$this, 'processForm'];
?>
<?php
public function businessCaseFromItemAdd(SubmitButton $button)
{
$businessCaseItem = $button->parent;
if ($businessCaseItem->isAllFilled()) {
$button->parent->createOne();
}
}
public function businessCaseFormItemRemove(SubmitButton $button)
{
$businessCaseItem = $button->parent->parent;
$businessCaseItem->remove($button->parent, TRUE);
}
?>
<?php
public function actionEdit($id)
{
$this->id = $id;
if ($id) {
$businessCase = $this->businessCaseRepository->get($id);
$businessItem = $this->businessCaseItemRepository->get($id);
$this->template->file = $businessCase->attachment;
$i = 0;
foreach ($businessItem as $item) {
$this['businessCaseForm']['businessCaseItems'][$i]->setDefaults($item);
$i++;
}
$this['businessCaseForm']->setDefaults($businessCase);
$this['businessCaseForm']['attachment']->setOption('description', $businessCase->attachment)->setRequired(false);
$this['businessCaseForm']['date_created']->setDefaultValue($businessCase->date_created->format('Y-m-d'));
$this['businessCaseForm']['due_date']->setDefaultValue($businessCase->due_date->format('Y-m-d'));
} else {
$this->error('Faktura nebyla nalezena');
}
}
?>
Editoval kiCkZ (12. 4. 2018 20:36)