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
+
0
-

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
+
0
-

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}...
Jirda
Člen | 103
+
0
-

Jan Tvrdík napsal(a):

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

Díky! Funguje.