Skip to content

Commit 9af766b

Browse files
MilanPaladg
authored andcommitted
Latte: Fixed $formContainer recover after end of formContainer macro [Closes #43]
1 parent 903a0b9 commit 9af766b

File tree

5 files changed

+41
-3
lines changed

5 files changed

+41
-3
lines changed

src/Bridges/FormsLatte/FormMacros.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static function install(Latte\Compiler $compiler)
3434
{
3535
$me = new static($compiler);
3636
$me->addMacro('form', array($me, 'macroForm'), 'echo Nette\Bridges\FormsLatte\Runtime::renderFormEnd($_form)');
37-
$me->addMacro('formContainer', array($me, 'macroFormContainer'), '$_form = array_pop($_formStack)');
37+
$me->addMacro('formContainer', array($me, 'macroFormContainer'), '$formContainer = $_form = array_pop($_formStack)');
3838
$me->addMacro('label', array($me, 'macroLabel'), array($me, 'macroLabelEnd'));
3939
$me->addMacro('input', array($me, 'macroInput'), NULL, array($me, 'macroInputAttr'));
4040
$me->addMacro('name', array($me, 'macroName'), array($me, 'macroNameEnd'), array($me, 'macroNameAttr'));

tests/Forms.Latte/FormMacros.formContainer.phpt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ $cont2->addCheckbox('input6', 'Input 6');
2626

2727
$cont1->addText('input7', 'Input 7');
2828

29+
$contItems = $form->addContainer('items');
30+
$items = array(1, 3);
31+
foreach ($items as $item) {
32+
$contItem = $contItems->addContainer($item);
33+
$contItem->addText('input', 'Input');
34+
}
35+
2936
$form->addSubmit('input8', 'Input 8');
3037

3138

tests/Forms.Latte/expected/FormMacros.formContainer.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@
2626
<th><label for="frm-cont1-input7">Input 7</label></th>
2727
<td><input type="text" name="cont1[input7]" id="frm-cont1-input7"></td>
2828
</tr>
29+
<tr>
30+
<th>Items</th>
31+
<td>
32+
<input type="text" name="items[1][input]" id="frm-items-1-input">
33+
<input type="text" name="items[3][input]" id="frm-items-3-input">
34+
</td>
35+
</tr>
2936
<tr>
3037
<th></th>
3138
<td><input type="submit" name="input8" value="Input 8"></td>

tests/Forms.Latte/expected/FormMacros.formContainer.phtml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,24 @@ echo Nette\Bridges\FormsLatte\Runtime::renderFormBegin($form = $_form = $_contro
2626
<?php $iterations = 0; foreach ($formContainer->controls AS $name => $field) { ?>
2727
<li><?php $_input = is_object($field) ? $field : $_form[$field]; echo $_input->getControl() ?></li>
2828
<?php $iterations++; } ?> </ol>
29-
<?php $_form = array_pop($_formStack) ?>
29+
<?php $formContainer = $_form = array_pop($_formStack) ?>
3030
</td>
3131
</tr>
3232
<tr>
3333
<th><?php if ($_label = $_form["input7"]->getLabel()) echo $_label ?></th>
3434
<td><?php echo $_form["input7"]->getControl() ?></td>
3535
</tr>
36-
<?php $_form = array_pop($_formStack) ?>
36+
<?php $formContainer = $_form = array_pop($_formStack) ;$_formStack[] = $_form; $formContainer = $_form = $_form["items"] ?>
37+
<tr>
38+
<th>Items</th>
39+
<td>
40+
<?php $items = array(1, 2, 3) ;$iterations = 0; foreach ($items as $item) { if (!isset($formContainer[$item])) continue ;$_formStack[] = $_form; $formContainer = $_form = is_object($item) ? $item : $_form[$item] ?>
41+
<?php echo $_form["input"]->getControl() ?>
42+
43+
<?php $formContainer = $_form = array_pop($_formStack) ;$iterations++; } ?>
44+
</td>
45+
</tr>
46+
<?php $formContainer = $_form = array_pop($_formStack) ?>
3747
<tr>
3848
<th><?php if ($_label = $_form["input8"]->getLabel()) echo $_label ?></th>
3949
<td><?php echo $_form["input8"]->getControl() ?></td>

tests/Forms.Latte/templates/forms.formContainer.latte

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,20 @@
2626
<td>{input input7}</td>
2727
</tr>
2828
{/formContainer}
29+
{formContainer items}
30+
<tr>
31+
<th>Items</th>
32+
<td>
33+
{var $items = array(1, 2, 3)}
34+
{foreach $items as $item}
35+
{continueIf !isset($formContainer[$item])}
36+
{formContainer $item}
37+
{input input}
38+
{/formContainer}
39+
{/foreach}
40+
</td>
41+
</tr>
42+
{/formContainer}
2943
<tr>
3044
<th>{label input8 /}</th>
3145
<td>{input input8}</td>

0 commit comments

Comments
 (0)