Nefunkční předání parametru při redrawControl()

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

Zdravím,

párkrát jsem tu podobný dotaz našel, ale odpověď, která by mi pomohla ne.

Mám komponentu s render metodou:

public function render($id){
    $this->id = $id;
    $this->template->id = $id;
}

Když v handle metodě komponenty, kterou volám při kliku na odkaz, mám:

if ($this->presenter->isAjax()){
	    $this->redrawControl();

Nastane chyba: „Missing argument 1 for render()“

Dohledal jsem, že problém je způsobený tím, že se automaticky volá metoda render(), přičemž já potřebuji volat render($id). Může někdo napsat ukázku konkrétního kódu, který „vyléčí“ můj problém?:)

Díky

David Matějka
Moderator | 6445
+
0
-

Vetsinou neni nutne predavat parametry az ze sablony:

  • pokud tam mas tu komponentu jen jednou, tak jiz znas to id v presenteru, takze ho predej jiz v createComponent metode
  • pokud ji tam mas vicekrat s ruznymi ID, pouzij multiplier
newPOPE
Člen | 648
+
0
-

Ano je to presne tak ako hovoris. Problem je tu: https://github.com/…IRuntime.php#L50 ale nie je to „riesitelne“ :).

Ono myslim, ze tie parametre tam nepriletia tak ci tak. Lebo ajaxom sa zavola render a nemas ich tam ako z view dostat. Parametre treba do komponenty vrazit na inom mieste…

mrfazolka
Člen | 24
+
0
-

Mam ji vicekrat a pouzil jsem multiplier, ale asi jinak, nez by bylo vhodne :). Kazdopadne parametr nepredavam jeden predavam id, width, heigh. Id obrazku, sirku, vysku. I kdybych pouzil multiplier a id obraku by pak bylo predpokladam jmeno komponenty, jsem u stejneho problemu a potrebuji predat zbyle 2 parametry

David Matějka
Moderator | 6445
+
0
-

a ty zbyle dva nemuzes predat z createComponent? (respektive z ty factory multiplieru).. ukaz kod, ten povi vic :)

mrfazolka
Člen | 24
+
0
-

Rozumim tomu dobre ze bych mel nastavovat parametry napr. v configu a pak jen volat {control nazevKomponenty} v sablone? Jestli ano, je to pouzitelne i pro komponenty, vytvarene pres multiplier jejichz cele jmeno dopredu znam?

mrfazolka
Člen | 24
+
0
-

Nebo…jde udelat neco takoveho jako ulozeni promennych do session a nacteni pri znovurenderovani? Neresise tohle pomoci persistent promennych, coz mi ale nefunguje?:)

Kaliver
Člen | 12
+
0
-

Ahojte, aky by mal byt postup, ak potrebujem komponente predavat minimalne 1 parameter.
V sablone mam komponentu {control menu, ‚top‘}, kde ‚top‘ je pozicia danej komponenty. Podla tohto parametra sa v tovarnicke predaju dalsie parametre z databazy.

Pri ajaxovani narazam presne na tento problem s predavanim parametra. Diki za odpoved.

akadlec
Člen | 1326
+
0
-

Jednoduše, přenes to z šablony do nějakého setteru komponenty.