neinvalidace controleru s formulářem

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
masterr
Začátečník | 141
+
0
-

Zdravím,
mám ArticlePresenter a v něm render metodou:

public function renderDefault($cat_url, $page)
	{
		......
		if ($this->presenter->isAjax())
		{
			$this->invalidateControl('forumControl');
		}
	}

a componentu:

	protected function createComponentForumControl()
	{
		.....
		return new \ForumControl($this->context, $model, $params, $this->cat_url, $this->page, $this->userid, $this->username);
	}

a pak .latte:

....
{snippet forumControl}
			{control forumControl}
			{/snippet}
...

Je to formulář na přidávání příspěvku do fora. A chci aby se formulář při odeslání komentáře načítal ajaxově. Jenže požadavek se neodešle jako ajax, napadá vás kde by mohl být problém? Díky moc

thm
Člen | 147
+
0
-

Máš ve formuláři class = "ajax"?

$form->getElementPrototype()->class[] = 'ajax';

Editoval thm (6. 10. 2014 14:29)

masterr
Začátečník | 141
+
0
-

Přidal jsem to + jsem přidal do jquery.nette.js

$('form.ajax').live('submit', function (event) {
    event.preventDefault();
    $.post(this.action, $(this).serialize());
});

Myslím si, že bude asi problém v tom javascriptu. Ten kod na ten ajax form jsem tu našel na foru, akorát mi není jasné, proč se to serializuje, to bych to pak měl asi deserializovat? V componentě?

Mělo by to fungovat uplně stejně jako bez ajaxu, akorát by se měla jen překreslit ta část stránky se snipetem, že j? Akorát, že mi tam ten ajax furt nejede, a odešle se to normálně.

Do stránky linkuju netteForms.js a jquery.nette.js

Mysteria
Člen | 797
+
0
-

Použij radši https://github.com/…ette.ajax.js pak ti stačí dát jenom $.nette.init(); a mít u odkazů a formulářů, které chceš řešit AJAXově třídu ajax a je to. Samozřejmě nezapomenout na invalidaci snippetů v presenteru. :)

thm
Člen | 147
+
0
-

Přesně tak. Nejdříve si to vyzkoušej na nejjednodušším formuláři, jestli se ti odesílá AJAXově.

masterr
Začátečník | 141
+
0
-

Je to hodně divné, částečně mi to funguje.

Mám tam 2 formuláře, jeden je na odpověd ke komentáři a druhý na založení nové diskuze. Každý má svoji továrničku.

1)Ten na založení diskuze se mi normálně odešle ajaxově, ale pak mi nepřekresli správně šablonu, měl by tam přibýt ten komentář, ale nepřibyde. Když dám F5 tak se tam zobrazí. Součástí toho modulu fora je i metoda createTemplate. Proč se nevykreslí správně?

  1. Přidání komentáře, funguje tak že kliknu na odkaz a javascriptově vezmu celý form na response a vyměním mu ID, podle toho na jaký příspěvek reaguji. Ale vůbec se neodešle ajaxově, je to tím že jsem ho vzal od někud a vložil jinam? Dochází pak k nějaké špatné inicializaci toho ajax scriptu?

Dík

Editoval masterr (7. 10. 2014 18:28)

thm
Člen | 147
+
0
-

To už je na mě moc, to ti bohužel neporadím.