Samostatné použití Latte – Nefunkční makro {form}

- Martin Mates
 - Člen | 179
 
Zdravím, snažím se využít formluáře a Latte šablony samostatně. Když jsem vyzkoušel kód z dokumentace:
$latte = new Latte\Engine;
$latte->setTempDirectory(__DIR__ . '/temp');
$latte->render(__DIR__ . '/form.latte', ['subscribeForm' => $this->form]);
Šablona pak vypadá takto:
<form n:name="subscribeForm">
     <input n:name="email" type="email" placeholder="Enter your e-mail and..." class="radius" />
     <input n:name="send" type="submit" value="Download free pdf guide" class="button" />
</form>
Zařve mi to na chybě „Unknown attribute n:name…“. Takto použitá šablona zřejmě umí jen základní makra jako {$promenna}, {if}, {while} (to mi funguje), ale makro {form} nefunguje. Víte někdo co s tím? Můžu to makro {form} do šablony nějak registrovat?
Editoval Martin Mates (7. 10. 2014 21:50)

- David Matějka
 - Moderator | 6445
 
Ano, musis ale zaregistrovat
Nette\Bridges\FormsLatte\FormMacros, zhruba takhle:
$latte->onCompile[] = function($latte) {
 Nette\Bridges\FormsLatte\FormMacros::install($latte->getCompiler());
}
					Editoval matej21 (7. 10. 2014 22:05)

- Martin Mates
 - Člen | 179
 
Díky moc! To mě posunulo o něco dál. Šablona už se zkompiluje. Teď zase pro změnu dostávám error `Argument 1 passed to Nette\Bridges\FormsLatte\FormMacros::renderFormBegin() must be an instance of Nette\Forms\Form, null given `
Teď to vypadá takhle:
$latte = new Latte\Engine;
        $latte->setTempDirectory(__DIR__ . '/temp');
        $latte->onCompile[] = function($latte) {
            FormMacros::install($latte->getCompiler());
        };
        $latte->render(__DIR__ . '/form.latte', ['subscribeForm' => $this->form]);
Formulář je správně a je typu Nette\Forms\Form, protože když v šabloně napíšu {$subscribeForm}, tak se to vykreslí. Asi to nějak špatně té šabloně předávám.
Ve zkompilované šabloně to vypadá takhle:
 <?php Nette\Bridges\FormsLatte\FormMacros::renderFormBegin($form = $_form = $_control["subscribeForm"], array()) ?>
Nerozumím tomu, ale trochu mi dělá starosti to $_control tam. Čím by to mohlo být?

- David Matějka
 - Moderator | 6445
 
Ty tam mas totiz pouze nazev – tak se to snazi hledat ten formular
v komponente.
zkus pouzit:
<form n:name="$subscribeForm">
(tedy s $, takze to rovnou vezme objekt v te promenne)