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}...