Nefunkční předání parametru při redrawControl()
- mrfazolka
- Člen | 24
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
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
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
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
a ty zbyle dva nemuzes predat z createComponent? (respektive z ty factory multiplieru).. ukaz kod, ten povi vic :)
- Kaliver
- Člen | 12
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.