Filtrační formulář – počet při změně, výpis po odeslání

joe
Člen | 313
+
0
-

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
+
0
-

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
+
0
-

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í :-(