Kdyby/Replicator – Ruční vypsání tlačítka „přidat další“
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- kastanekdavid
- Člen | 39
Čau,
nevíte někdo, jak manuálně v šabloně vypsat tlačítko, které je připíchnuté na replicator?
Tady je kód pro generování formuláře:
<?php
public function createComponentNewRuleForm($name){
$form = new Form($this, $name);
$presenter = $this;
$invalidateCallback = function() use($presenter){
/** @var \Nette\Application\UI\Presenter $presenter */
$presenter->invalidateControl('newRuleForm');
};
$tables = $this->getService('ruleModel')->provideTableNames();
reset($tables);
$columns = $this->getService('ruleModel')->provideColumnValues(current($tables));
reset($columns);
$conditions = $this->getService('ruleModel')->provideAllowedActions(current($tables), current($columns));
$replicator = $form->addDynamic('rule', function(Container $container) use($invalidateCallback, $tables, $columns, $conditions, $presenter){
$container->addSubmit('remove', 'X')
->addRemoveOnClick($invalidateCallback);
$container->addSelect('table', 'Table', $tables);
$container->addSelect('column', 'Column', $columns);
$container->addSelect('condition', 'Condition', $conditions);
$container->addText('value', 'Value');
}, 1);
$replicator->addSubmit('add', 'Add')
->addCreateOnClick($invalidateCallback);
$form->addSubmit('send', 'OK')->onClick[] = callback($this, 'NewRuleSubmitted');
return $form;
}
?>
Tady je kód šablony:
{snippet rulesForm}
{form newRuleForm}
{*{$form}*}
<table class="rules-form">
<tr><td>Remove</td><td>Table</td><td>Column</td><td>Condition</td><td>Value</td></tr>
<tr>
{foreach $form['rule']->containers as $rule}
<td>{$rule['remove']->control}</td>
<td>{$rule['table']->control}</td>
<td>{$rule['column']->control}</td>
<td>{$rule['condition']->control}</td>
<td>{$rule['value']->control}</td>
{/foreach}
</tr>
<tr><td>{*TADY JE POTŘEBA TLAČÍTKO ADD*}</td><td>{input send}</td></tr>
</table>
{/form}
<script type="text/javascript">
{foreach $form['rule']->containers as $i => $rule}
{include #jsCallback, id => $i, input => $rule['table']->name, link => tableChange}
{include #jsCallback, id => $i, input => $rule['column']->name, link => tableChange}
{/foreach}
</script>
{/snippet}
Nevíte někdo jak se na ten replicator dostat? :)
- kastanekdavid
- Člen | 39
Majkl578 napsal(a):
{input rule-add}
Jinak nechápu, proč nepoužíváš makra
{input}
.
Díík. Makra jsem dodělal :)