Částečně perzistentní parametry komponent
- stanley
- Člen | 22
Zdravím.
Potřeboval bych poradit s následujícím problémem:
- Mám komponentu, která vypíše seznam (např. článků).
- Tato komponenta má signál „detail“, který dostane jako parametr ID článku, a vykreslí namísto seznamu konkrétní článek.
- Na komponentě s detailem je subkomponenta formulář (např. komentáře). Odešlu-li tento formulář, ztratím signál „detail“ na nadřazené komponentě a zobrazí se mi seznam.
- Měl bych tedy zobrazení „detailu“ řídit nikoliv signálem, ale nějakým „obyčejným“ parametrem komponenty. Tento parametr by se měl dostat i do action zmíněného formuláře.
- Jenže jediný způsob, jak ho tam umím dostat, je označit ho jako perzistentní, což ale způsobí, že se mi tento parametr dostane i do odkazů vně mojí komponenty se seznamem článků.
Potřeboval bych něco jako „částečně perzistentní parametr komponenty“, který by se zachovával v rámci odkazů vytvořených v komponentě nebo v jejích subkomponentách, ale ne nikde mimo. Tuší prosím někdo, jak toho docílit?
Díky moc.
- Ot@s
- Backer | 476
Detail určitě neřeš signálem. Zálěží na situaci, ale obecně to
řeším vhodným nastavením rout (prostě počítám s tím, že v SEO URL
se bude vyskytovat část „ukazující“ na detail nějakého objektu).
Každopádně použití persistence v komponentě je na místě. Ty místa, kde
ti „nevhodně zasahuje“ do generování odkazů musíš ošetřit
(vyresetovat pers.proměnnou do východí hodnoty, pak už „neprudí“).
class Article extends Control
{
/** @persistent */
public $id;
}
V šabloně detailu článku pak
<a n:href="this, id=>null">Zpět do výpisu článků</a>
Editoval Ot@s (11. 1. 2012 13:59)
- bojovyletoun
- Člen | 667
já si naopak myslím, že routy v tomhle nehrají roli. Jelikož komponenty umí jen signály a ne action, tak to řeší signálem. Zkus se podívat na lookout control