První aplikace – jak na ni
- JMM
- Člen | 7
Zdravím,
nainstaloval sem nette pro php 5.3. Vše běží. Chtěl sem dle vzoru
v sandboxu udělat adresářovou strukturu, tak abych tam měl jen soubory
nutné pro spuštění. Bohužel se mi to nedaří osekat tak, aby tam zůstalo
jen minimum kodu a souborů.
Vytvořil by mi tu někdo základní aplikaci, která využívá jednu šablonu (.nette)? Nemusí to dělat vůbec nic, jen tam třeba vypsat formulář nebo proměnou. Já jen abych pochopil jak to funguje a později přidával další funkcionality.
- Šaman
- Člen | 2666
V Sandboxu si můžeš promazat tělo metody
HomepagePresenter->renderDefault()
a v šabloně
templates\Homepage\default.latte
nech jen
{block content} {/block}
.
Pokud chceš opravdu hodně ořezanou verzi, tak ještě smaž
SignPresenter
a adresář templates\Sign
. V tom
případě můžeš i smazat model\Authentocator
a jeho řádek
v configu. Úpravy v tomto odstavci ti však nepřekáží a jednou se ti asi
budou hodit, takže je nechávám i v projektech, kde zatím nepracuji
s uživateli.
Víc nemaž, vše ostatní je nutné pro chod frameworku.
- JMM
- Člen | 7
Díky,
rozhodl jsem se že výjdu z example Modules-Usage. Pač chci využít admin a
front. Ještě sem úplně nepochopil proč jde odkazovat Admin:Default a
Front:Default, předpokládám, že za to může beforeRender, která je
v BasePresenter.php. Chtěl sem dát přihlašovací formulář do
@layout.latte (adminModule). Abych to nemusel psát od začátku, tak sem
tam použil věci z CD-Collection (SignPresenter.php a model
Authenticator.php).
Do šablony @layout.latte (adminModule) sem dal {control signInForm}.
Ale vypisuje mi to Component with name ‚signInForm‘ does not
exist
Čumím do toho už 3 hodiny a sem KO. Poradíte co dělám špatně? Googlil
sem, pročítal tady forum. Ale asi sem toho zkopal víc.
Chtěl sem do Nette přepsat jeden projekt, co mi před lety někdo vytvořil.
Chtěl sem abych ho udělal bezpěčnější a tak. Ale zatím nedokážu ani
přidat formulář :-/
- thunderbuff
- Člen | 164
JMM napsal(a):
Do šablony @layout.latte (adminModule) sem dal {control signInForm}. Ale vypisuje mi to Component with name ‚signInForm‘ does not exist
To znamená, že v prsesenteru, po kterém komponentu (formulář) chceš, nemáš továrničku, co by ti tu komponentu vyrobila. Podívej se do zdrojových kódů, kterými se inspiruješ a okopíruj odtud metodu createComponentSignInForm, která ti ji vytvoří.
Vždy, když v šabloně voláš {control xxx}, musíš mít v presenteru (nebo v nějakém jeho předkovi) protected metodu createComponentXxx, co komponentu vrátí.
Editoval thunderbuff (12. 4. 2013 23:19)
- Myiyk
- Člen | 321
Šablony @layout.latte slouží jako rodič pro šablony,
které již vkládají nějaký konkrétní obsah.
Jestli do layoutu dáš nějaký formulář, tak se bude vykreslovat na každé
stránce (což u přihlášení není zrovna žádoucí), proto ten formulář
{control signInForm} dej do konkrétní šablony, ideálně
sign/in.latte, jak to tuším je v sandboxu.
Editoval Myiyk (12. 4. 2013 23:33)
- castamir
- Člen | 629
- Projdi si quickstart
- Odkazy se tvoří na základě rout. Mrkni do RouterFactory (nebo v případě staršího sandboxu do bootstrap.php). V zásadě platí, že ty zkrácené odkazy (ty s těma dvojtečkama) dělíš na relativní (bez dvojtečky na začátku) a na absolutní (s dvojtečkou na začátku).
příklad: jsi v šabloně default, presenteru Homepage, modulu Front. (pozn. budu používat pseudozápis s oddělovačem → abych se neupsal a aby to bylo přehlednější)
odkaz na FrontModule → DruhejPresenter → detail
"Druhej:detail"
nebo taky absolutně
":Front:Druhej:detail"
odkaz na FrontModule → SubModule → NejakyPresenter → akce
"Sub:Nejaky:akce"
nebo absolutně
":Front:Sub:Nejaky:akce"
a absolutní odkaz na AdminModule → HomepagePresenter → default
":Admin:Homepage:default"
Editoval castamir (12. 4. 2013 23:34)
- JMM
- Člen | 7
thunderbuff napsal(a):
To znamená, že v prsesenteru, po kterém komponentu (formulář) chceš, nemáš továrničku, co by ti tu komponentu vyrobila. Podívej se do zdrojových kódů, kterými se inspiruješ a okopíruj odtud metodu createComponentSignInForm, která ti ji vytvoří.
Vždy, když v šabloně voláš {control xxx}, musíš mít v presenteru (nebo v nějakém jeho předkovi) protected metodu createComponentXxx, co komponentu vrátí.
createComponentSignInForm mám v SignPresenter.php Bylo by možné mi poslat příklad toho Modules-Usage doplněný o přihlašování, abych si to mohl porovnat a zjistit co jsem dělal pořád špatně?
- macejko1
- Člen | 18
Nevkladaj {control signInForm} priamo do @layout.latte. Skus componentu vlozit do Sign.latte a tuto celu sablonu obal do blokov {block content} {/block}
Jednoducho nemozes vkladat componentu do @layout.latte, pretoze ak sa nemylim, tak by kod createComponentSignForm musel byt v BasePresentery a nie v SignPresentery. Ak si nejaku komponentu vytvoris priamo v SignPresentery, tak jednoduche vykreslovanie v sablonach pomocou {control …} ti pojde len v zlozke templates/Sign/…latte. Ak chces nejaku komponentu vkladat do viacerich sablon, tak miesto toho aby si v kazdom presentery pisal rovnaky kod, tak componentu si vytvoris v BasePresentery a vsetky ostatne presentery ju budu dedit.