nette.ajax.js – alt. obsluha pro AJAX s jQuery

pidiclovek
Člen | 91
+
+1
-

Vojtěch Dobeš napsal(a):

Podpora je skutečně jen přes datový atribut v HTML. Nicméně tento atribut je zpracováván až v rozšíření snippets. Její chování si lze však přepsat k obrazu svému:

$.nette.ext('snippets')applySnippet = function ($el, html, back) {
	// ...
};

Perfektní, funguje jako víno. Vyřešil jsem přidáním přepínače do globálního kontextu rozšíření. Díky Vojto!

petr.kubin
Člen | 1
+
0
-

Ahoj,
jak vytvořit vlastní ajax handler pro odeslání formuláře?

Když použiju predfinovaný (class .ajax), tak nejsem schopen dát na prvek překresleného formuláře .focus().
A když použiji:

		$.nette.ajax({
			url: $form.attr('action'),
			method: 'POST',
			complete: function(data) {
				$this.focus();
			}
		});

Tak jsem schopen dát .focus() na prvek, jenže formulář se nepřekreslí, neivaliduje se snippet.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

petr.kubin napsal(a):

Ahoj,
jak vytvořit vlastní ajax handler pro odeslání formuláře?

Když použiju predfinovaný (class .ajax), tak nejsem schopen dát na prvek překresleného formuláře .focus().
A když použiji:

		$.nette.ajax({
			url: $form.attr('action'),
			method: 'POST',
			complete: function(data) {
				$this.focus();
			}
		});

Tak jsem schopen dát .focus() na prvek, jenže formulář se nepřekreslí, neivaliduje se snippet.

Vypadá to, že neodesíláš data toho formuláře. Udělej to raději takto:

// e by měl objekt události, ve které tento kód voláš

$form.netteAjax(e).always(function(data) {
	$this.focus();
});
tom
Člen | 171
+
0
-

Jestli se to tady řešilo tak se omlouvám, nenašel jsem. Chtěl bych rozlišit 2 typy ajaxových volání, jeden typ by obsahoval zobrazení spinneru a druhý ne. Napadlo mě pro to využít extension, kdy si definuji 2. Jak potom ovlivním kterou z nich použiji? Nyní mám pocit, že se mi aplikují obě dvě.

Díky

Vojtěch Dobeš
Gold Partner | 1316
+
+5
-

Což třeba takto?

$.nette.ext('spinner', {
	init: function () {
		this.spinner = this.createSpinner();
		this.spinner.appendTo('body');
	},
	before: function (xhr, settings) {
		if (typeof settings.spinner === 'undefined') {
			if (settings.nette && settings.nette.el) {
				settings.spinner = settings.nette.el.is('[data-ajax-spinner]');
			}
		}
	},
	start: function (xhr, settings) {
		if (!settings.spinner) {
			return;
		}

		this.counter++;
		if (this.counter === 1) {
			this.spinner.show(this.speed);
		}
	},
	complete: function () {
		this.counter--;
		if (this.counter <= 0) {
			this.spinner.hide(this.speed);
		}
	}
}, {
	createSpinner: function () {
		return $('<div>', {
			id: 'ajax-spinner',
			css: {
				display: 'none'
			}
		});
	},
	spinner: null,
	speed: undefined,
	counter: 0
});

Použití:

$.nette.ajax({
	url: ...,
	spinner: true
});
<a n:href="signal!" class="ajax" data-ajax-spinner>Signal with spinner!</a>
tom
Člen | 171
+
0
-

Vojtěch Dobeš napsal(a):

Což třeba takto?

diky :-)

flexroad
Člen | 117
+
0
-

Ahoj…

pokud pridam do url kterou chci volat ajaxem dvojtecku, prestane se link volat ajaxem.
dvojtecky pouzivam jako parsovaci znak napriklad pri nastavovani filtru.

Poradite mi nekdo, co mam upravit, aby to bralo i url s dvojteckou?

http://domena.com/neco/ → jede normalne
http://domena.com/…/cena-od:10/ → po kliku refreshne celou stranku :(

diky,

@flexroad

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Dej si na ty odkazy následující datový atribut:

<a class="ajax" n:href="..." data-ajax-validate='{"url":false}'>

nette.ajax.js ve výchozím chování (extenze validation) filtruje URL které obsahují dvojtečku, protože jde s největší pravděpodobností o absolutní externí odkazy.

flexroad
Člen | 117
+
0
-

Ahoj, resil nekdo NS_ERROR_ILLEGAL_VALUE ve firefoxu? Nasel jsem jen rok stary post.

Je divne, ze pokud to testuju na lokalnim stroji, chybu firefox nevraci a pokud to poslu na server, firefox po druhem ajaxovem volani zhavaruje na vyse uvedene chybe…

Nejake napady? Muze to byt verzi PHP? Apache? Nejakym rozdilnym nastavenim?

Diky,

@flexroad

flexroad
Člen | 117
+
+1
-

flexroad napsal(a):

Ahoj, resil nekdo NS_ERROR_ILLEGAL_VALUE ve firefoxu? Nasel jsem jen rok stary post.

Je divne, ze pokud to testuju na lokalnim stroji, chybu firefox nevraci a pokud to poslu na server, firefox po druhem ajaxovem volani zhavaruje na vyse uvedene chybe…

Nejake napady? Muze to byt verzi PHP? Apache? Nejakym rozdilnym nastavenim?

Diky,

@flexroad

Tak uz jsem nasel verzi history.ajax.js, ktera funguje i s FireFox… link

akadlec
Člen | 1326
+
0
-

@flexroad hele je to problém history extension a FFka kterému přeteče paměť.

flexroad
Člen | 117
+
0
-

akadlec napsal(a):

@flexroad hele je to problém history extension a FFka kterému přeteče paměť.

Jj. Cetl jsem o tom… Kazdopadne vyse uvedeny upraveny nette.history.js to resi… Ale moc do podrobna jsem to nestudoval.

Editoval flexroad (13. 5. 2015 12:45)

Pavel Janda
Člen | 977
+
0
-

Zdravím,

dynamické snippety – rád bych se na něco zeptal, dřív musím však uvést konkrétní příklad:

Template:

{snippet foos}
	{foreach $foos as $i => $foo}
		{snippet foo-{$i}}
			<h{!$i}><a class="ajax">{$foo}</a></h{!$i}>
		{/snippet}
	{/foreach}
{/snippet}

<a href="{link bar!}" class="ajax">bar</a>

Presenter

public function handleBar()
{
	$this->template->foos = [1 => 'Hu', 3 => 'Bleble'];
	$this->redrawControl();
}

Tedy, snippet, v něm dynamické snippety. Pokud chci přidat/odebrat/prostě změnit kolekci dynamických snippetů, lze toho docílit jinak, než překreslením všech snippetů?

Pokud ne, cesta smazání snippetu je jednoduchá – v payload si pošlu id smazané věci a tu odeberu z DOMu, ale co přidání? Těžko se hledá rodičovský element posílaného snippetu, abych ho k němu appendoval. Nelíbí se mi posílání jména snippetu spolu s nějakou třídou rodiče a s tím související psí kusy.

Napadá někoho nějaké geniální myšlenka?
Nebo jsem za blbce a někde jen stačí uvést třeba dvojtečka a celé se to začne chovat jinak?

Dosavadní řešení:

Editoval Beton (21. 5. 2015 16:17)

xxmiky
Člen | 1
+
+1
-

Ahoj,

přišel jsem na problém v IE8 a nette.ajax.js, ale nevím, jestli nemám něco špatně v aplikaci, či jestli jsem nenarazil na bug v nette.ajax.js

V nette.ajax.js, řádky 367 – 371:

<script>
if (analyze.form.get(0).onsubmit && analyze.form.get(0).onsubmit((typeof ie !== 'undefined' && ie < 9) ? undefined : e) === false) {
	e.stopImmediatePropagation();
	e.preventDefault();
	return false;
}
</script>

Vyskytlo se mi to, když mám AJAXové submitování formuláře v modal okně a následné překreslení komponenty v modalu. V Chrome a FF se mi komponenta v pohodě překreslí a vypíše mi to flash message.

V IE8 (bohužel jinak nejde, ale tady to chodit musí) se mi refreshuje celá stránka a ne pouze komponenta. Je to díky této chybě v javascriptu, kdy se potom nevykoná AJAX post, ale pouze post a tím následný refresh stránky.

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Tablet PC 2.0)
Timestamp: Mon, 25 May 2015 12:33:14 UTC


Message: Object doesn't support this action
Line: 367
Char: 5
Code: 0
URI: http://fsi3/js/nette.ajax.js?v=


Message: Object doesn't support this action
Line: 367
Char: 5
Code: 0
URI: http://fsi3/js/nette.ajax.js?v=

Z debugování javascriptu mi vyšlo, že v IE8 nejde funkce onsubmit(undefined), uvedená v IFu na řádce 367:

(typeof ie !== 'undefined' && ie < 9) ? undefined : e

z porovnání vyjde toto a to hází bohužel výše uvedenou chybu

analyze.form.get(0).onsubmit(undefined)

Tak jsem se chtěl zeptat, jestli je nette.ajax.js funkční i v IE8 či případně nemám já něco špatně. Pokud mám špatně, nemohl byste někdo poradit?

Díky

raketoplan2005
Člen | 147
+
0
-

Ahoj, napsal jsem si extension na vlastní spinner, která zároveň disaebluje nějaká formulářivá pole.

Problém je v tom, že se ale spouští se vším co má class ajax, tedy např. i s filtrováním v gridu.

Jak by se mělo rozšíření správně zapnout jen na jednom formuláři na kterém ho potřebuji?

Děkuji

akadlec
Člen | 1326
+
0
-

Pohldej, už se to v tomhle vláknu řešilo. Musíš ji registrovat podmíněně.

raketoplan2005
Člen | 147
+
0
-

@akadlec: To jsem samozřejmě udělal a našel váš post. S tím se mi to ale nedaří. Když zavolám addConditionalExtension tak nemám v settings.nette.el nic z atributu data-ajax-on.

{
  "el": {
    "0": {
      "0": {},
      "1": {},
      "2": {},
      "3": {},
      "sizzle-1432656043440": {
        "parentNode": [
          38,
          8,
          true
        ]
      },
      "nette-submittedBy": {}
    },
    "context": {
      "0": {},
      "1": {},
      "2": {},
      "3": {},
      "sizzle-1432656043440": {
        "parentNode": [
          38,
          8,
          true
        ]
      },
      "nette-submittedBy": {}
    },
    "length": 1
  },
  "isForm": true,
  "isSubmit": false,
  "isImage": false
}

Editoval raketoplan2005 (26. 5. 2015 18:03)

akadlec
Člen | 1326
+
0
-

ale ten data atribut by měl být jen pro spuštění té extension. Mě to funguje. Jak to voláš?

raketoplan2005
Člen | 147
+
0
-

Do stránky kde to rozšíření potřebuji si připojím soubor s tímto obsahem:

(function ($, undefined) {

    addConditionalExtension('blockform', {
        init: function () {
            this.spinner = this.createSpinner();
            this.spinner.appendTo('body');

        },
        start: function () {
            this.counter++;
            if (this.counter === 1) {
                this.spinner.show(this.speed);
            }
            this.form.hide();
        },
        complete: function () {
            this.counter--;
            if (this.counter <= 0) {
                this.spinner.hide(this.speed);
            }
            this.form.show();
            this.input.val('');
        }
    }, {
        createSpinner: function () {
            return $('<i>', {
                id: 'ajax-spinner',
                class: 'fa fa-spinner fa-pulse',
                css: {
                    display: 'none',
                }
            });
        },
        spinner: null,
        speed: undefined,
        counter: 0,
        form: $('#mainform'),
        input: $('#datainput')
    });

})(jQuery);

Funkci addConditionalExtension pak mám v main.js který se připojí dříve. Funkce se normálně zavolá, ale v el mám to co jsem postoval v příspěvku 157109. Myslím že neumím správně použít nebo předat setings té události prepare.

Editoval raketoplan2005 (27. 5. 2015 9:48)

MW
Člen | 615
+
0
-

Zdravím,

prosím o radu.
Mám u gridu tento potvrzovací dialog:

<a n:href="doLoadBackup, 'file' => $backup[name]"
	       data-confirm="modal"
                data-confirm-title="Potvrzení akce"
                data-confirm-text="Obnovit?"
                data-confirm-ok-class="btn-danger"
                data-confirm-ok-text="Obnovit"
                data-confirm-cancel-class="btn-success"
                data-confirm-cancel-text="Zrušit"
                class="btn btn-danger btn-mini"
                data-ajax="on"><span class="glyphicon glyphicon-share-alt"></span> Obnovit</a>

pokud nastavím class ajax, tak akce proběhne pokazde a spinner se zobrazí ihned po kliknutí.
pokud nenastavím ajax, tak to funguje, ale zase se nezobrazí spinner.

Lze to nejak dat dohromady? Tedy
Klinutí → potvrzovací dialog → potvrzení → spinner.

Moc diky!

stemba
Člen | 20
+
0
-

Ahoj,
s AJAXem pro Nette začínám a potřeboval bych vědět, jak upravit nebo dopsat nějakou funkci k obsluze snippetu, která by se provedla před a po jeho překreslení. Konkrétně jde o to, že potřebuji vytvořit popup okno (div), které se vytvoří při kliknutí na odkaz s určitým attributem nebo css třídou a jehož obsah se načte pomocí snippetu. Po jeho překreslení potřebuji spustit javascriptový efekt, který zviditelní a případně skryje div.

Díky

Uucroutu
Člen | 3
+
0
-

Ahoj,
používám rozšíření spinner.
Nicméně mám místa, kde nechci spinner zobrazit.
Jak pomocí class „.nospinner“ zakázat jeho zobrazení?
Pokud odkaz .ajax obsahuje i .nospinner, tak se spinner neukáže, jinak se zobrazí.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Uucroutu napsal(a):

Ahoj,
používám rozšíření spinner.
Nicméně mám místa, kde nechci spinner zobrazit.
Jak pomocí class „.nospinner“ zakázat jeho zobrazení?
Pokud odkaz .ajax obsahuje i .nospinner, tak se spinner neukáže, jinak se zobrazí.

Upravil bych si extenzi následovně:

start: function (xhr, settings) {
	if (settings.nette && !settings.nette.el.is('.nospinner')) {
		return;
	}

	this.counter++;
	if (this.counter === 1) {
		this.spinner.show(this.speed);
	}
}
complete: function (xhr, status, settings) {
	if (settings.nette && !settings.nette.el.is('.nospinner')) {
		return;
	}

	this.counter--;
	if (this.counter <= 0) {
		this.spinner.hide(this.speed);
	}
}
Uucroutu
Člen | 3
+
+1
-

díky :)

Šaman
Člen | 2635
+
0
-

Ahoj, zkouším nainstalovat JSka pomocí boweru a narazil jsem na zvláštní chování:
repozitáři je vyžadována závislost "nette-forms": "~2.2", což z composeru chápu jako 2.2.x, ale i 2.x.x. Ale bower mi při instalaci tvrdí, že výsledkem tohoto je aktuálně verze 2.2.7, což není kompatibilní s požadavkem nette-forms 2.3.
Tady je můj bower.json, který vyhodí kolizi:

{
  "name": "pokusy",
  "dependencies": {
    "jquery": "~2.1.4",
    "bootstrap": "~3.3.5",
    "nette-forms": "~2.3.6",
    "nette.ajax.js": "~2.1.0"
  }
}
iguana007
Člen | 970
+
0
-

Ahoj, rád bych poprosil @VojtěchDobeš o doplnění infa do dokumentace, že AJAX nefunguje v případě, že URL obsahuje port za doménou. Právě jsem na tom propálil skoro dva dny, než jsem náhodou narazil na zmínku o portu zde na fóru. Sice jsem zároveň našel info o tom, jak validaci URL vypnout pomocí data atributu, toto ovšem nefunguje u formulářů, proto bych se rád zeptal, zda-li nevíte, jak validaci URL vypnout i u formulářů?
Díky

enumag
Člen | 2118
+
+1
-

@iguana007 Kde přesně se ta validace provádí? Nešlo by to opravit aby port prošel?

iguana007
Člen | 970
+
0
-

@enumag definice je imho tady: https://github.com/…ette.ajax.js#L277

Zkoušel jsem i takto, ale nepomohlo:

$.nette.init();
$.nette.ext('validation', null);
enumag
Člen | 2118
+
+2
-

@iguana007 Tzn. je třeba akorát opravit tenhle regulár ne? Pošleš PR?

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

PR will be welcomed :).

iguana007
Člen | 970
+
0
-

PR odeslán…

nanuqcz
Člen | 822
+
+2
-

Funguje vám history.nette.ajax.js, pokud voláte AJAXový požadavek ručně?

Příklad:
Takto mi přepis URL v prohlížeči funguje bez problému:

<a n:href="Homepage:foo" class="menu ajax">Foo</a>

Ale takto (s ručním voláním) již ne. AJAXový požadavek se provede správně, snippety se překreslí, ale URL zůstává stále stejná:

<a n:href="Homepage:foo" class="menu">Foo</a>

<script>
jQuery(function(){
	jQuery('a.menu').click(function(e){
		var $link = jQuery(this);

		jQuery.nette.ajax({
			url: $link.attr('href'),
			off: ['spinner'],
			start: function () {
				$specialSpinner.show(200);
			},
			complete: function () {
				$specialSpinner.hide(200);
			}
		});

		e.preventDefault();
	});
});
</script>

Když jsem dumpoval history.nette.ajax.js, zjistil jsem, že skončí na tomto řádku: https://github.com/…tory.ajax.js#L72 , protože settings.nette je undefined.

Ale jak chybu opravit, případně jestli je chyba u mě, nebo v nette.ajax.js, na to jsem nepřišel.

Poradí někdo? Díky :-)


EDIT: Jak už to bývá, člověk na řešení přijde hned po sepsání dotazu sám :-D

Špatné volání nette ajaxu:

jQuery.nette.ajax({
	...
});

Správné volání nette ajaxu:

jQuery.nette.ajax({
	...
}, this, e);

Editoval nanuqcz (15. 4. 2016 11:57)

CZechBoY
Člen | 3608
+
0
-

Zajimavy. To abych radsi prepsal vsechny custom volani nette.ajax.
Dik

nanuqcz
Člen | 822
+
0
-

A člověk pak ani nemusí vyplňovat URL adresu a metodu (get/post). Nette.ajax.js si ty hodnoty automaticky zjistí z this a z e :-)

Fakt geniální plugin :-)

CZechBoY
Člen | 3608
+
0
-

To asi funguje jen na odkazy a formulare… Pokud mam „odkaz“ na TR tak to asi automaticky nepozna :-)

stemba
Člen | 20
+
0
-

Ahoj,
Při AJAXovém odesílání formuláře s více tlačítky mi při zpracování nefunguje detekce tlačítka (metoda isSubmittedBy), kterým byl formulář odeslán.

Čím by to mohlo být?

Díky

CZechBoY
Člen | 3608
+
0
-

@stemba jak ten formular odesilas? Normalne ma jen tridu ajax? Nekdo tu s tim mel problem kdyz validoval formular pomoci bootstrap validatoru a mel to spatne nastaveny.

karel.juricka
Člen | 4
+
0
-

Nevím jistě jestli je to problém nebo očekávané chování, ale pokud formuláři nastavím class ajax, tak tím znefunkčním netteForms.js validaci. Procházel jsem celé fórum, zkoušel pochopit parametry apod. ale nepodařilo se mě přijít na elegantní řešení, kde by ta validace běžela a současně by se ajax poslal až pokud by prošla.

Podařilo se mi udělat řešení, kdy jsem si chyby vytáhl na serveru a pak poslal zpátky a zobrazil chyby, ale rád bych věděl, zda něco přehlížím a lze, aby fungovala při ajaxovém zpracování i čistá form validace nette přes JS.

Díky za info

Šaman
Člen | 2635
+
0
-

To je divné, mě to ajaxové formuláře normálně validuje. Máš přilinkované obě knihovny a neupravuješ nějak vlastní JS?

karel.juricka
Člen | 4
+
0
-

Ano, nalinkované mám obě, nejnovější verze. Žádné JS navíc tam nemám, zkusil jsem i naprosto osekat a stejný problém. Ono když držím ctrl a kliknu na odeslat, tak se mi normálně spustí nette js form validace. V opačném případě se začně hned posílat ajaxový dotaz (JS validaci to přeskočí) a chybu mohu odchytit jen na serveru.

Šaman
Člen | 2635
+
0
-

Njn, tak snad se k tomu vyjádří někdo AJAXově zkušenější. Já ti jen mohu potvrdit, že to není ani očekávané, ani běžné chování.

karel.juricka
Člen | 4
+
0
-

Ano, za tuto informaci děkuji. Už jsem si večer připadal, že se snad snažím o nemožné. Proto budu ještě nad tím přemýšlet, nicméně pokud mi někdo dokáže odpovědět, budu rád.

Zkusil jsem úplně čistý test :

Nainstaloval jsem čistý sandbox. Doplnil nette.ajax.js a inicializaci. Zapl jednoduchý formulář, otestoval a narazil na stejný problém. Opět netteForms.min.js nevaliduje.

Editoval karel.juricka (17. 5. 2016 9:02)

Šaman
Člen | 2635
+
0
-

Ještě bych se zeptal – nefunguje ti ani JS validace při které vyskočí alert, nebo ti jde o vlastní validaci, která se defaultně vykresluje červeně vedle inputu? Ta první by měla fungovat normálně, ale pro tu druhou je potřeba při chybě překreslit formulář (a na to se zapomíná, překresluje se až v onSuccess, k tomu ale nedojde).

<?php
$form->onError[] = function($form) {
    $this->redrawControl('form'); // sem si doplň vlastní snippet, nebo nech bez parametru
};
?>

Editoval Šaman (17. 5. 2016 9:14)

karel.juricka
Člen | 4
+
0
-

Rozumím, bohužel jde opravdu o tu JS validaci, která mě nefunguje – čistý JS alert. Serverové onError chybu zachytí, tím jsem schopen si ji poslat zpátky ajaxem a zobrazit, to je také řešení, které aktuálně používám. Ale zarazil mě ten problém s tou JS validací pokud je zaplý ajax a proto jsem zde napsal :)

kuxa
Člen | 5
+
0
-

Hezký večer, řeším jeden menší problém. Na webu všechny stránky načítám přes AJAX. Mimo to ještě každých 15 vteřin pravidelně updatuju jeden informační snippet. Ale problém je v tom, že jakmile se pravidelný update spustí během běžícího requestu na načtení stránky (který vyvolal uživatel), načítání stránky se abortne a dokončí se pouze update.
A tak bych se chtěl zeptat, je nějak možné udělat požadavek asynchronní (popř. pokud vás napadá jiné řešení…)? Děkuji moc!

jiri.pudil
Nette Blogger | 1028
+
+1
-

Můžeš pro ten update vypnout rozšíření, které to abortování provádí:

$.nette.ajax({
	off: ['unique'],
	// ...
});

anebo si ho přepsat třeba do websockets

CZechBoY
Člen | 3608
+
+1
-

Ja treba vypnu interval na update pri prechodu na jinou stranku. Hledej udalost onBeforeUnload

kuxa
Člen | 5
+
0
-

jiri.pudil napsal(a):

Můžeš pro ten update vypnout rozšíření, které to abortování provádí:

$.nette.ajax({
	off: ['unique'],
	// ...
});

Díky moc, tohle dělá přesně to, co chci.

Pepiik
Člen | 10
+
+1
-

Zdravím, pomocí javascriptu vytvářím další odkazy se třídou ajax, ale už se na ně nenaváže událost click.nette.
v initu bych potřeboval

$(this.linkSelector).off('click.nette', rh).on('click.nette', rh);

zaměnit za toto

$(document).off('click.nette', rh).on('click.nette',this.linkSelector, rh);

Toto funguje, ale dá se toho nějak docílit bez přepisování knihovny? Díky

Oggy
Člen | 306
+
0
-

Ahoj.. pokud mám ajaxový formulář.
a chci navázat v javascriptu na event submit další js kód, nevykoná se.

<script>
$(document).on('submit','form.addtocart', function() {
	console.log('submit');
	$('#cart-modal').foundation('open');
});
</script>

Pokud nemá form.ajax třídu, tak kód funguje.

Update, vyřešeno:
našel jsem stejný případ zde: https://forum.nette.org/…bmit-handler

Editoval Oggy (16. 6. 2016 19:41)