Formulář jako komponenta v komponentě a nefukční odesílání

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ondrej256
Člen | 187
+
0
-

Dobrý den,

Mám komponentu Rodič, která se skládá z komponent (hlavně formulářů)

class ClientControl extends Control
{

	public function __construct($orderId)
	{
		parent::__construct();

	}

	public function render()
	{
		$this->template->setFile(__DIR__ . '/ClientForm.latte');
		$this->template->render();
	}

	public function createComponentClientForm()
	{
		$form = new Form();
		$form->addTextArea .......
		...
		$form->addSubmit("send","Přidat")->setAttribute("class", "btn btn-primary btn-success");
		$form->onSuccess[] = callback($this, 'clientFormSubmitted');
		return $form;
	}

	public function clientFormSubmitted(Form $form)
	{
		throw new Exception("FUNGUJE TO"); // nevykonna se
	}



}

Komponenta rodič

<?php

class RodicControl extends Control
{


	public function __construct(IContainer $parent = NULL, $name = NULL)
	{
		parent::__construct($parent, $name);
	}

	public function createComponentClientControl()
	{
		$form = new ClientControl();
		return $form;
	}


	public function render()
	{
		$this->template->setFile(__DIR__ . '/RodicControl.latte');
		$this->template->render();
	}

}

Všechno se v pořádku vykreslí, ale bohužel se nezavolá funkce pro zpracování formuláře. Když kliknu na tlačítko Přidat tak se načte nová stránka se stejným url (v url není název funkce která by se měla volat – „clientFormSubmitted“)

Vím, že se tu řešilo několikrát něco podobného, ale nic z toho co sem našel mně nepomohlo a taky jsem nenašel případ komponenty v komponentě. Nevím zda v tom není zakopaný pes.

Všem děkuju za rady

David Matějka
Moderator | 6445
+
0
-

Vytvaris Nette\Application\UI\Form?

ondrej256
Člen | 187
+
0
-

matej21 napsal(a):

Vytvaris Nette\Application\UI\Form?

ano

David Matějka
Moderator | 6445
+
+1
-

Jak pote vytvaris tu komponentu v presenteru?

ondrej256
Člen | 187
+
0
-

Omlouvám se, zázračně to začalo fungovat.
Neznámo jak to vyřešil restart počítače :D