Filtrační formulář – počet při změně, výpis po odeslání
- joe
- Člen | 313
Ahoj,
zajímalo by mě, jak byste řešili následující scénář – nepotřebuji přímo konkrétní kód, jen nasměrovat tím správným směrem.
Aktuálně mám ItemsPresenter
, který má
actionDefault()
, actionTop()
,
actionNews()
(náhodné, nejlepší a novinky) – možná toto
už není nejlepší a stačilo by actionDefault($type)
? V každé
té akci vypisuju (stejnou) komponentu na filtrování a při změně
jakéhokoli inputu ve filtru chci (třeba) do odesílacího tlačítka napsat
počet odpovídajících položek právě nastavenému filtru a po stisku
tlačítka chci tyto položky vypsat.
Ale narazil jsem a vlastně nevím co kam mám psát, co dát do snippetů, jakým způsobem posílat data při AJAXu, kde přesně snippety překreslovat, na co mám použít signál a mám ho mít v komponentě nebo v presenteru? Jak řešit přepisování na tlačítku, když nejde mít snippet uvnitř formuláře? Jak do komponenty dostat jestli jde o náhodné, nejlepší nebo položky typu novinky?
Poradili byste mi prosím? Díky moc.
- Šaman
- Člen | 2666
Já bych to řešil samostatnou komponentou a ukládal to do databáze jako uživatelské nastavení. Případně do session, pokud to nepovažuješ za dost důležité, aby se to ukládalo jako setting.
Pohledy bych nechal rozdělené, mají pak hezčí adresu a případné dodatečné úpravy se nemusí cpát do ifů (třeba řazení novinek podle data, ale top příspěvků podle hodnocení…)
- joe
- Člen | 313
Dík, možná jsem myslel ještě víc „dřívější“ pomoc, ty už jsi moc daleko za tím, co potřebuji:)
Mám kód, který jsem teď rozkouskoval na snippety:
<h1 n:snippet="heading">Nadpis</h1>
<ul n:snippet="subnav">
<li><a href="#">Náhodně</a></li>
<li><a href="#">Nové</a></li>
<li><a href="#">TOP</a></li>
</ul>
{control filter}
<div n:snippet="items">
</div>
Při změně jakéhokoli inputu ve filtru, chci do jeho tlačítka umístit jen počet. Až po kliku na tlačítko „Zobrazit (16)“ chci zobrazit 16 položek mimo komponentu filtr.
Jak mám ale řešit odesálání změny inputu? Pošlu AJAX, ale kam? Na
adresu formuláře (action) nebo na adresu signálu? Pokud na adresu
formuláře, jak řešit, že chci v tuto chvíli odesílat jen počet? Pokud
na signál (handleCount
například), jak se v tom signálu
dostanu k hodnotám – ty mám poslat přes POST, přes GET? Napadlo mě
přidat skryté tlačítko „Zjistit počet“ do formuláře, skrýt ho a na
základě odeslání přes něj to odlišit. Ale všechno mi přijde dost divné
řešení :-(