SetDefaults na dynamický formulář
- Rudolf247
- Člen | 38
Zdravím,
Nějak jsem se za sekl na problému, kdy potřebuji použít setDefaults na
formulář, který se vykresluje na základě záznamů v databázi.
Všechno funguje jak má, jen to setDefaults nemohu nějak rozchodit.
Děkuji za každou radu.
Tady je kód.
protected function createComponentUpdateWidgets()
{
$form = new Form();
$widget = $form->addDynamic('widget', function (Container $position){
$position->addInteger('position');
$position->addSelect('widget_location', NULL, array('left_sidebar' => 'Levý sloupec', 'right_sidebar' => 'Pravý sidebar'));
$position->addHidden('ide');
}, 1);
$form->addSubmit('update', 'Změnit')
->setValidationScope(false);
$form->onSuccess[] = array($this, 'updateWidgets');
return $form;
}
<form n:name="updateWidgets">
<table class="table">
<thead>
<tr>
<th>Název</th>
<th>Pořadí</th>
<th>Umístění</th>
<th class="text-right">Aktivní</th>
</tr>
</thead>
<tbody id="active">
{foreach $widgets as $key => $widget}
<tr>
<td class="pl-3">{$widget->name}</td>
<td><input n:name="widget-$widget->id_widget-position" class="form-control" type="number" value=""></td>
<td><select n:name="widget-$widget->id_widget-widget_location" class="form-control">
<option {if $widget->widget_location == 'left_sidebar'} selected="selected" {/if} value="left_sidebar">Levý sloupec</option>
<option {if $widget->widget_location == 'right_sidebar'} selected="selected" {/if} value="right_sidebar">Pravý sloupec</option>
</select></td>
<td class="text-right pr-3"><input title="active" name="active-{$widget->id_widget}"
data-id="{$widget->id_widget}" type="checkbox" data-toggle="switch"
data-on-color="info" data-off-color="info" data-on-text=""
data-off-text="" {if $widget->active}checked{/if}></td>
</tr>
<ul n:if="$form->hasErrors()">
<li n:foreach="$form->errors as $error">{$error}</li>
</ul>
<input n:name="widget-$widget->id_widget-ide" value="{$widget->id_widget}">
{/foreach}
</tbody>
</table>
<input n:name="update">
</form>