Predanie parametru do handle komponenty

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

Zdravim,

mam problem s redanim parametru do handle komponenty, viem ze treba pri komponente mat parameter aj s menom komponenty, preto som si meno toho parametru predal z render metody do latte a teraz posielam ajax dotaz s datami kde je meno parametru menokoponenty-parameter, ale ani tak mi to nefunguje, uz vobec neviem kde robim chybu.

Robi to tak ze do latte si vygenerujem link ako {link nejakyHandle} a predam si niekde do hiddeen parameter vygenerovany v render $template->parameterId = $this->getParameterId(‚id‘); a potom v ajaxe ziskam meno toho id parametru a poslem data ze meno-id-parametru: ‚ok‘ ale nezoberie mi to ani tak…

CZechBoY
Člen | 3608
+
0
-

Jednoduchý příklad na Control s handlem + snippetem

class SomeControl extends Control
{
	private $id;

	public function handleUpdate ($id)
	{
		$this->id = $id;

		$this->redrawControl('snip');
	}
	public function render ()
	{
		$this->template->id = $this->id;
	}
}
{snippet snip}
	{if $id}
		{$id}
	{else}
		<a n:href="update!, id => rand()*1000"> {* odkaz z komponenty, nikoliv presenteru *}
	{/if}
{/snippet}

Editoval CZechBoY (25. 3. 2016 13:51)

Raiper34
Člen | 65
+
0
-

No ok, ale ja to osielam ajaxom dynamicky generujem obsah id…

CZechBoY
Člen | 3608
+
0
-

Co znamená dynamicky generujem obsah id?

{foreach $ids as $id}
	<a n:href="update!, id => $id">update</a>
{/foreach}
Raiper34
Člen | 65
+
0
-

no ja v javascripte tie data vytvaram nie ze dam nieco: nieco2, ale to nieco2 je moj JSON objekt s datami ktore pozbieram na stranke, presnejsie posielam poradie stlpcov, ktore mozu byt zmeneneho poradia pomocou drag and drop

CZechBoY
Člen | 3608
+
0
-
<script n:syntax="double">
var myId = 10;

$.nette.ajax({
	url: {{link update!}},
	data: {
		id: myId
	}
});
</script>

edit: tohle funguje jen pro presentery, protože chybí prefix komponenty u parametru ID.

Editoval CZechBoY (25. 3. 2016 22:14)

Raiper34
Člen | 65
+
0
-

Toto prave v komponente nefunguje

CZechBoY
Člen | 3608
+
0
-

Jak je to možný? Mně jo.
Co přesně nefunguje?

Raiper34
Člen | 65
+
0
-

no tie parametre ako som sa docital sa v komponentre chovaju inak, ale nefunguje mi to tak ci tak niekde asi robim chybu https://forum.nette.org/…e-komponenty

Raiper34
Člen | 65
+
0
-
function changeColumnOrder()
{
    $.nette.ajax({
    url: $('#columnOrder').attr( "data-column-order" ),
    type: 'POST',
    data: { parameter: getColumns() },
        success: function (payload) {
        }
    });
}
public function handleChangeColumnOrder(array $parameter)
        {
            Debugger::fireLog($parameter);
        }

Toto nefunguje… skusal som aj ine metody nic mi neislo…

Editoval Raiper34 (25. 3. 2016 22:12)

CZechBoY
Člen | 3608
+
0
-

Aha, sorry.
Tak si tam doplň ten prefix pro komponentu jak radili F.Vesely + David Matějka.

public function render ()
{
	$this->template->idParameterNameFQ = $this->getParameterId('id');
}
<script n:syntax="double">
var myId = 10;

$.nette.ajax({
    url: {{link update!}},
    data: {
        {{$idParameterNameFQ}}: myId
    }
});
</script>

Editoval CZechBoY (25. 3. 2016 22:15)

Raiper34
Člen | 65
+
0
-

No ved to som skusal to mi tieznefunguje… :/

Raiper34
Člen | 65
+
0
-

A uz to mam! Nakoniec to bolo iba ze siom generoval zly parameter a predaval do templatu ked som testoval…