Jak na formulář s vlastní šablonou ve vlastním souboru?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jirda
- Člen | 103
Zdravím,
mám formulář dělaný jako samostatnou tčídu, která dědí od BaseForm a ten od Nette\Application\UI\Form.
Chci docílit stavu, kdy budu mít jednoduchou šablonu, např:
{form myForm}
<fieldset>
<p>
{label name /}<br>
{input name }
</p>
<p>{input submit}</p>
</fieldset>
{/form}
a v ní se myForm vždy vykreslí.
Mám v BaseForm render metodu:
public function render()
{
// 1. pokus
// nefunguje, hlasi cyklickou referenci
//$this->addComponent($this, 'myForm');
// 2. pokus
// tohle nejde, nelze dosadit za nazev formu v makru form promennou $myForm
//$this->template->myForm = $this;
$this->template->render();
}
V kodu je zakomentovan pokusny kod, ktery jsem zkousel.
Instanci $this->template ziskam volanim metody createTemplate v BasePresenteru:
public function createTemplate($class = null)
{
$template = parent::createTemplate($class);
$this->registerHelpers($template); // zaregistruje me helpery
return $template;
}
Snažil jsem se pohledat na diskusi, ale nic moc mi nepomohlo.
Předem díky za pomoc.
- Jan Tvrdík
- Nette guru | 2595
Předávej si název formuláře:
public function render()
{
$this->template->formName = $this->name;
$this->template->render();
}
a v šabloně pak
{form $formName}...