Vykreslitelná komponenta jako služba nepřijímá parametry signálu

- Oggy
 - Člen | 306
 
nette 2.0.10
Vytvořil jsem komponentu Basket .. nechci se starat o předávání parametrů, vytvářím ji tedy přes config.
konstruktor komponenty:
<?php
class Basket extends Control {
..
    public function __construct(Nette\Http\Session $session, ModelLoader $modelLoader,\Oggy\Helpers $helpers) {
        parent::__construct();
 	....
    }
}
?>
config:
<?php
  services:
	basket: Basket
?>
BasePresenter:
<?php
abstract class BasePresenter extends \BasePresenter {
    /* @var \Basket */
    private $basket;
    //inject sluzby
    public function injectBasket(\Basket $basket)
    {
        $this->basket = $basket;
    }
    //tovarnicka
    protected function createComponentBasket() {
        return $this->basket;
    }
?>
bohužel signál komponenty nepřijímá parametry:
<?php
public function handleMetoda($moje_id) {
   \Nette\Diagnostics\Debugger::barDump($moje_id);
}
?>
$moje_id je NULL
Problém bývá, že komponenta není připojena k rodiči. Přímo v komponentě používám $this->presenter->user, pokud si celou komponentu dumpnu, v handle metodě, vidím, že připojena je.
Otázky kolem DI, inject, atd .. je plné fórum, hledal jsem, ale na podobný problém jsem nenarazil. Většinou je problém v nevolání konstruktoru předka.
Možná jsem celý princip pojmul špatně.

- Oggy
 - Člen | 306
 
PavelJurasek napsal(a):
Pošli i odkaz, kterým ten signál posíláš
Tak odkaz dělám přes nette.ajax ..ale je klasický link
v template kompenenty
<script type="text/javascript">
        function chooseShipMethod(shipmethod_id) {
            $.nette.ajax({
                url: {link chooseShipMethod!},
                data: {"shipmethod_id": shipmethod_id},
                type: 'get'
            });
        }
</script>
url linku
…?do=basket-chooseShipMethod&shipmethod_id=1
Editoval Oggy (4. 4. 2013 12:26)

- David Matějka
 - Moderator | 6445
 
ten parametr ma totiz byt basket-shipmethod_id=1, aby tam nemusel davat nazev komponenty na tvrdo, muzes pouzit getUniqueId

- Vojtěch Dobeš
 - Gold Partner | 1316
 
Přesně tak, komponenta je napsaná správně. Pro hlubší pochopení –
klíčové je tam to volání parent::__construct(), ale to je
důležité kvůli tomu, že se v tom předkovi volá
$this->monitor('Nette\Application\UI\Presenter'). Právě tohle
volání je zddpovědné za načtení parametrů do komponenty. Jak říkám, ty
to máš správně, jde jen o ten název parametru v odkazu :).