jak nastavit šablonu formuláře?

- Šaman
 - Člen | 2668
 
Vzdávám se, po dvanácti hodinách studia formulářů se mi nepodařilo zprovoznit něco takového:
třída formuláře která dědí od AppForm (pokusForm.php)
<?php
...
public function render()
{
  $template = new FileTemplate;
  $template->setFile(__DIR__ . '/pokusForm.latte');
  $template->registerFilter($latte = new LatteFilter());
  FormMacros::register($latte->getHandler());
  $template->form = $this;
  $template->render();
}
...
?>
šablona formuláře (pokusForm.latte)
<?php
{form $form}
    <p class="error" n:foreach="$formErrors as $error">{$error}</p>
    <table>
        <tr>
            <th>{label name, text => "Username"}</th>
            <td>{input name}</td>
        </tr>
{/form}
?>
Registraci maker, včetně těch vylepšených samozřejmě mám.
V presenteru si továrničkou vytvořím komponentu toho formuláře a pak ji
chci vykreslit pomocí {control pokusForm}. A nestarat se
o šablony, ty by si měl formulář načíst sám. Boužel takto mi to
nešlape.
Zkolabuje to na:
<?php
Undefined variable: control
$formErrors = FormMacros::beginForm($form, $control, array())->getErrors();
?>
Zkoušel jsem do proměnné $form předávat až vytvořenou komponentu po
připojení k presenteru (pomocí monitorování a metody attached) ale taky
bez úspěchu. Přitom volání
{include 'pokusForm.latte', form => $presenter['pokusForm']} mi
funguje bez problémů.
Tušíte někdo jak na to, pls? Nechci se v šabloně pohledu starat o to, kde mám nějaké šablony každého formuláře na stránce, chci si ho tam prostě vložit a nestarat se (resp. starat se jen když k tomu mám nějaký zvláštní důvod).
P.S. Pokud to přepíšu bez použití vylepšených maker, tak problém přetvává, naprosto stejný..
Editoval Šaman (3. 4. 2011 6:20)

- Filip Procházka
 - Moderator | 4668
 
Řešením je vlastní TemplateFactory, které registruješ jako službu a následně zneužiješ ve formulářích.