Pop-up v komponentě? Lze nebo musím udělat jinak?
- joska
- Člen | 20
s Nette a MVC architekturou zatím dělám pátým týdnem, takže je pravděpodobné, že mi stále něco uniká. Mám komponentu BookList, starající se o výpis db do tabulek. Komponentu mám uloženou v
/app/components/BookList/BookList.php
/app/components/BookList/template.php
vkládám jí do aplikace pomocí továrničky. Potřeboval bych, aby v tabulce, kterou komponenta vypisuje byl odkaz otevírající pop-up, kde by byl view /app/components/BookList/popup.phtml a bylo by zde možné používat signály z komponenty. Je to možné udělat? Mohl by mi někdo poradit myšlenku, zkouším to již den a stále mě nenapadá funkční řešení.
Editoval joska (31. 5. 2010 11:48)
- pave.kucera
- Člen | 122
Myslíš pop-upem nové okno prohlížeče, anebo div plovoucí nad ostatními?
Editoval JannBaill (31. 5. 2010 20:42)
- pave.kucera
- Člen | 122
Tady mě napadá jenom tvůj způsob – ,,popup presenter", který vykreslí speciální view komponenty (defaultní vykreslí pouze odkaz a tabulku, ,,speciální" pak přímo obsah pop up okna, ať se komponenta nemusí zajímat o to jakým presenterem je spouštěna).
Ale jestli lepší řešení neexistuje, to si radši netroufám odpovědět.
- Honza Kuchař
- Člen | 1662
JS:
window.open({link mujPresenter:mojeAkce});
A v template toho mujPresenter:mojeAkce uveď na začátek
{extends none}
To způsobí, že se vyrenderuje jen samotný obsah.
Nebo ještě lépe použij
vícestupňové dědění
Rozhodně si tém uštříš spousty práce do budoucna. V
@layout-minimal.phtml
budeš mít jen fakt základ.
<doctype>
<head>
<body>
<div class="flashmessages">
{block #content}{/block}
<a tak dále...>
V @layout nějaký blok, který rozšíří obsah toho @layout.phtml a na začátku bude
{extends @layout.phtml}
{block #content}
Zde něco před původním obsahem
{include #parent}
zde něco po
{/block}
A v každé normální šabloně v aplikaci budeš mít buť nic (a použije se ti @layout.phtml nebo ho tam klidně můžeš pro přehlednot uvést)
{extends ../relativni/cesta/../../k/../@layout.phtml}
{block #content}
Můj obsah šablony, který se mi zobrazí někde v designu stránky
A když budu chtít otevřít pop-up okno, tak jen udělám šablonu
dědící z @layout-minimal.phtml
a vyrendruje se ti do toho pop-up
okna už jen obsah
{extends ../relativni/cesta/../../k/../@layout-minimal.phtml}
{block #content}
Zde bude obsah pop-up okna
P.S.: Pokud jsi do teď používal tzn. staré šablony nebo jsi prostě jen zatím nepoužíval AJAX, tak si přečti, jak fungují zavináče: https://forum.nette.org/…iewtopic.php?…
Ad. signály: Jáv bych to řešil vytvořením abstraktní třídy presenteru, jakožto předka těch dovou presenterů:
- PresenterSDatagridem
- PresenterSPopupem
No a tím můžeš používat signály z abstraktního presenteru v obou presenterech co jsou v hiearchii „pod ním“.
Doufám, že jsem ti to trochu objasnil.
Uff, nějak jsem se rozepsal, doufám, že jsem odpověděl na to, na co jsi se ptal.