Nové hodnoty v checkboxu se po snippet refresh neodešlou
- kachna96
- Člen | 9
Ahoj,
mám formulář, který obsahuje několik položek, mimo jiné i Select box a
CheckboxList. V závislosti na hodnotě v Select boxu se překreslí snippet a
CheckboxListu nastavím nové hodnoty z databáze. Tohle všechno funguje
skvěle.
Problém nastane když formulář odešlu, nové položky v CheckboxListu se
prostě odmítají odeslat, odešle se jenom ta část, která je společná pro
všechny možnosti. Nevíte náhodou někdo, co s tím?
Díky!
public function create(callable $onSuccess)
{
$form = $this->factory->create();
$factionsList = array(
'Skellige' => 'Skellige',
'Northern Realms' => 'Northern Realms',
'Monster' => 'Monsters',
'Scoiatael' => 'Scoia\'tael',
'Nilfgaard' => 'Nilfgaard'
);
$leaders = $this->cards->getByFactionPairs(key($factionsList), 'Leader', false);
$form->addSelect('faction', 'Select a faction', $factionsList)
->setAttribute('class', 'form-control');
$form->addCheckboxList('leader', 'Select a leader', $leaders);
$form->addSubmit('send', 'Send')
->setAttribute('class', 'btn btn-primary');
$form->onSuccess[] = function (Form $form) use ($onSuccess){
$values = $form->getValues();
...
$onSuccess();
};
return $form;
}
public function actionNewMetaSnapshotDeck()
{
$this->template->form = $this['newMetaSnapshotDeckForm'];
}
{snippetArea wrapper}
{form newMetaSnapshotDeckForm}
<div class="form-group row">
<span class="col-sm-2 col-form-label">{label faction /}</span>
<div class="col-sm-10">
{input faction}
</div>
</div>
...
{snippet changeFaction}
<div class="form-group row">
<span class="col-sm-2 col-form-label">{label leader /}</span>
<div class="col-sm-10">
<div class="checkbox">
{foreach $form['leader']->items as $key => $label}
<input type="checkbox" n:name="leader:$key">
<label n:name="leader:$key">
{$label}
</label>
<br>
{/foreach}
</div>
</div>
</div>
{/snippet}
...
<div class="form-group row text-center">
<span class="col-sm-2 col-form-label"></span>
<div class="col-sm-10">
{input send}
</div>
</div>
{/form}
{/snippetArea}
public function handleFactionChange($faction)
{
$leaders = $this->cards->getByFactionPairs($faction, 'Leader', false);
$this['newMetaSnapshotDeckForm']['leader']->setItems($leaders);
$this['newMetaSnapshotDeckForm']['leader']->setDefaultValue(key($leaders));
if ($this->isAjax()) {
$this->redrawControl('wrapper');
$this->redrawControl('changeFaction');
} else {
$this->redirect('this');
}
}