První aplikace – jak na ni

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
JMM
Člen | 7
+
0
-

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.

Jan Endel
Člen | 1016
+
0
-

Doporučuju postupovat podle QuickStartu na tomhle webu v sekci dokumentace.

Grelek
Člen | 233
+
0
-

Proč se jdou lidi nejdřív zeptat na fórum, než aby se první mrknuli do dokumentace? =(

ViPEr*CZ*
Člen | 817
+
0
-

Co nechápete na sandboxu?

Šaman
Člen | 2666
+
0
-

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

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

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

Š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
+
0
-
  1. Projdi si quickstart
  2. 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
+
0
-

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ě?

JMM
Člen | 7
+
0
-

nebo jestli by byl někdo jiný ochotný to tam přidat? Sem s tím včera strávil zase moře času. Asi tam páchám nějako moc chyb :-/

macejko1
Člen | 18
+
0
-

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.