Negeneruje se kod snippetu do payloadu

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

Tak si hraju nejaky cas s nastavenim spravneho fungovani ajaxu a porad mi to negeneruje kod snippetu konkretni komponenty do promenne payload.

Zkousel jsem vsechno mozny, ale pokud dam invalidovat tu konkretni komponentu, kterou potrebuju vratit jako snippet, tak mi to vrati {„state“:[]}, pokud nedam invalidovat nic, tak mi to zase vrati uplne celou stranku. Myslel jsem ze davam funkci invalidateControl spatny nazev komponenty, ale pomoci getComponents jsem si vyjel komponenty a existuje. Mozna je problem v tom, ze dany snippet potrebuju vykreslit primo do layoutu. Ma se jednat o blok html zobrazovany nad hlavickou, obsahuje jednoduchy formular, po jehoz odeslani ma blok zmizet.

V layoutu mam kod:

<body>
	{foreach $flashes as $flash}<div class="flash {$flash->type}">{$flash->message}</div>{/foreach}

	{snippet userAfterRegistrationForm}
	{if $isUserAfterRegistration}
			{widget userAfterRegistrationForm}
	{/if}
	{/snippet}
	{widget header}
	{include #content}
</body>

Uvnitr toho widgetu userAfterRegistrationForm je form tag s akci:

/?do=userAfterRegistrationForm-userAfterRegistrationForm-submit

Je tam 2× userAfterRegistrationForm proto, ze mam formular v komponente a jmenuje se stejne jako ta komponenta (nikde mi to zatim nedelalo problem). Submit vede na akci formSubmitted komponenty userAfterRegistrationForm:

public function formSubmitted(Nette\Application\AppForm $form)
	{
		try {
			$values = $form->getValues();
			if (!$this->getPresenter()->isAjax())
				$this->redirect('this');
			else {
				$this->invalidateControl('userAfterRegistrationForm');
			}
		} catch (PropelException  $e) {
			$form->addError($e->getMessage());
		}
	}

Do teto akce se po odeslani formu dostanu, ale jak jsem psal do payload se nevygeneruje nic pokud tam mam radek $this->invalidateControl(‚userAfterRegistrationForm‘); pokud ho vynecham vygeneruje se zase uplne cela stranka. Jinak objekt payload nemam z komponenty pristupny v podobe $this->payload, ale musim napsat $this->getPresenter()->payload. Ale to je asi spravne. Tak cim by to mohlo byt? Btw. hral jsem si i se zavinaci v layoutu, ale vysledek byl vesmes stejny.

Editoval Vladik_hk (7. 1. 2011 11:04)