Tok signálu
- Aleš
- Člen | 30
Zdravím,
chtěl bych se zeptat jak přesně a kde dochází ke zpracování signálů?
Mám totiž problém, že se mi signál pro komponentu přenese bez parametrů,
tzn handle se provede, ale nedostane žádné parametry. Přitom ve
vygenerované url parametr je. Zkoušel jsem, zda něco někde nekazí moje
vlastní routy a použil jsem pouze SimpleRoute, ale problém trvá.
Předpokládám, že jsem si někde něco špatně podědil/přepsal, ale už
nevím kde hledat. Pro vytváření používám továrničku a zkoušel jsem i
„vynutit“ vytvoření komponenty hned ve Startupu presenteru.
Za jakékoli postrčení díky
- Filip Procházka
- Moderator | 4668
Pokud se parametr netýká presenteru tak tam je u něj navíc jméno komponenty, ukaž jaké ti to generuje url a jaká funkce s jakým názvem komponenty má signál přijímat a taky jak generuješ odkaz a kde se nachází templata kde ten odkaz generuješ
Editoval HosipLan (2. 2. 2010 23:34)
- Aleš
- Člen | 30
vygenerované url:
…/stranka?soubory-id=10&do=soubory-smazat
presenter
<?php
class Front_StrankaPresenter extends BasePresenter{
...
public function startup(){
parent::startup();
$soubory =$this["soubory"] ;
}
...
public function createComponentSoubory($name){
$soubory = new Files("stranka");
return $soubory;
}
}
?>
generování odkazů
{foreach $files as $file }
<a href="{!$path}{!$file["name"]}" >{$file["name"]}</a>
<a href="{link smazat!, "id"=>$file["id"] }">smazat</a>)
{/foreach}
Funkce pro přijímání signálu
<?php
class Files extends Control
{
...
public function handleSmazat($id)
{
//echo pouze pro test
echo "Test - $id -";
}
...
}
?>
signál se přijme, ale vypíše pouze „Test – -“.
Nicméně si nemyslím, že by to byla chyba komponenty, nefunguje mi ani třeba změna počtu vypisovaných položek u DataGridu. Nicméně signály z něj (datagridu, např pro smazání) fungují v pořádku :-/
- PetrP
- Člen | 587
Pro budouci generace jeste doplnim že podobný problém může vzniknout i když prepisete PresenterComponent::attached a nezavolate patent::attached. (podobně i u FormControl)