Tutoriál – triviální blog
- PJK
- Člen | 70
Když jsem ve čtvrtek pozoroval, jak se na celé aplské údolí snáší první srpnový sníh (nekecám!) a přemítal nad férovou roamingovou cenou 24Kč/100Kb, padla na mě velká nuda. A tak jsem se rozhodl obohatit Nette o něco, co má snad každý framework: tutoriál na blog, pokud možno za 20 minut. (to jen tak na okraj)
Chtěl bych se zeptat, jak to tady chodí. Můžu někde ve wiki vytvořit koncept, kam to přehodím, naformátuju a kde se o tom můžeme pobavit?
Aby jste věděli o co jde, http://www.clipboard.cz/8ef, ve skutečnosti tam jsou navíc i screenshoty atd…
- 22
- Člen | 1478
kazdej tutorial se hodi :-)
navstevni kniha od Pandy: https://pla.nette.org/…ivajici-ajax
- Honza Kuchař
- Člen | 1662
Link prozatím hoď na fórum, link na rozcestník přidáme, až to bude hotové. ;)
- Patrik Votoček
- Člen | 2221
Cool jen bych měl pár připomínek…
- Nebylo by od věci dodržovat Nette Coding Standard a místo mezer pro odsazování používat TABulátory.
- obecně je preferováno pro formuláře používat druhou variantu továrničky
$f
jako název proměné pro formulář mě nepřipadá jako šťastná volba- není použit cizí klíč
- chválím použití
{plink}
místo{link}
- napopak nechválím
{widget}
místo{cotrol}
(Můžete se také místo makra widget setkat s jeho starším aliasem control.
– je lež je to přesně naopak) - pokud odeslu komentar nedostanu informaci ze je to OK… (chtelo by to flashMessage)
Preferovanější továrnička pro formuláře.
protected function createComponentMyForm($name)
{
$form = new AppForm($this, $name);
//...
}
- Majkl578
- Moderator | 1364
Stručně jsem to prošel, ale i tak sem hodím nějaké mé výhrady:
- Nelíbí se mi coding standard (odsazování, zapomínání mezer,
nepoužití
public
u statických metod). - Callbacky je vhodnější vytvářet pomocí
callback()
(nearray()
). - Místo extenze
mysql
bych doporučil použitímysqli
. - U tabulek bych raději viděl InnoDB a cizí klíče.
- V šablonách presenterů mi přijde vhodnější
link
namístoplink
. - Hodil by se odkaz na funkční aplikaci – výsledek tutoriálu (nebo této části v případě vícedílného).
- „Sám se těmto úlohám budu věnovat v budoucích tutoriálech (tedy doufám, moje lenost je nevyzpytatelná mrcha).“ Tohle bych vyhodil, sebekritika se do tutoriálu nehodí.
- PJK
- Člen | 70
vrtak-cz napsal(a):
Cool jen bych měl pár připomínek…
- Nebylo by od věci dodržovat Nette Coding Standard a místo mezer pro odsazování používat TABulátory.
Pan Grudl je mi vzorem ve všem kromě formátování kódu :). Ale máš pravdu, přdělám. taby se zprasily kopírováním…
- obecně je preferováno pro formuláře používat druhou variantu továrničky
předělám
$f
jako název proměné pro formulář mě nepřipadá jako šťastná volba
předělám
- není použit cizí klíč
omlouvám se, učil mě bastlič :)
- chválím použití
{plink}
místo{link}
děkuju.
- napopak nechválím
{widget}
místo{cotrol}
(Můžete se také místo makra widget setkat s jeho starším aliasem control.– je lež je to přesně naopak)
opravím, jak stárnu tak blbnu
- pokud odeslu komentar nedostanu informaci ze je to OK… (chtelo by to flashMessage)
to je otázka… na jednu stranu možná stojí za to flash zprávy
předvést, na straně druhé je to u takové ukázky skoro zbytečné a dělá
to příklad už tak extrémně složitý ještě složitějším
>
Preferovanější továrnička pro formuláře.
protected function createComponentMyForm(AppData $form) { $form = new AppForm($this, $name); //... }
- PJK
- Člen | 70
Majkl578 napsal(a):
Stručně jsem to prošel, ale i tak sem hodím nějaké mé výhrady:
- Nelíbí se mi coding standard (odsazování, zapomínání mezer, nepoužití
public
u statických metod).
předělám
- Callbacky je vhodnější vytvářet pomocí
callback()
(nearray()
).
nevím jestli vyloženě vhodnější, ale asi názornější, předělám
- Místo extenze
mysql
bych doporučil použitímysqli
.
pravda, typo
- U tabulek bych raději viděl InnoDB a cizí klíče.
v čem přesně je výhoda innodb oproti myisam v demoaplikaci s 4 příspěvky a pár komentáři?
- V šablonách presenterů mi přijde vhodnější
link
namístoplink
.
To si s vrtakem prosím vyjasněte mezi sebou :D. Ale vzhledem k tomu, že odkazuji na samostatnou akci presenteru, je plink to pravé, ne?
- Hodil by se odkaz na funkční aplikaci – výsledek tutoriálu (nebo této části v případě vícedílného).
S tím počítám, jen otázka: Má tento web nějaký (nepovšimnutý) prostor pro dema, nebo to mám hodit k sobě (není to žádný problém, jen jestli by nebylo elegantnější a výhodnější mít ukázku na oficiálním serveru)?
- „Sám se těmto úlohám budu věnovat v budoucích tutoriálech (tedy doufám, moje lenost je nevyzpytatelná mrcha).“ Tohle bych vyhodil, sebekritika se do tutoriálu nehodí.
+1
- Patrik Votoček
- Člen | 2221
PJK napsal(a):
- U tabulek bych raději viděl InnoDB a cizí klíče.
v čem přesně je výhoda innodb oproti myisam v demoaplikaci s 4 příspěvky a pár komentáři?
Třeba právě v tom že MyISAM neumí cizí klíče
- V šablonách presenterů mi přijde vhodnější
link
namístoplink
.To si s vrtakem prosím vyjasněte mezi sebou :D. Ale vzhledem k tomu, že odkazuji na samostatnou akci presenteru, je plink to pravé, ne?
Už jsme se kvuli tomu pohádali… A zjistili že se neshodneme
- Hodil by se odkaz na funkční aplikaci – výsledek tutoriálu (nebo této části v případě vícedílného).
S tím počítám, jen otázka: Má tento web nějaký (nepovšimnutý) prostor pro dema, nebo to mám hodit k sobě (není to žádný problém, jen jestli by nebylo elegantnější a výhodnější mít ukázku na oficiálním serveru)?
Nemá (z bezpečnostních důvodů)
22 napsal(a):
... nestačí to zapsat? ...
Ne! Jde o to aby se provedlo připojení do stromu komponent co nejdříve.
- PJK
- Člen | 70
- V šablonách presenterů mi přijde vhodnější
link
namístoplink
.To si s vrtakem prosím vyjasněte mezi sebou :D. Ale vzhledem k tomu, že odkazuji na samostatnou akci presenteru, je plink to pravé, ne?
Už jsme se kvuli tomu pohádali… A zjistili že se neshodneme
Můžeš mi dát link? Zajímá mě to (vzhledem k tomu, že si celkem stojím za plink) a nemůžu to najít…
Jinak syntaxe opravena, tak to prosím zkoukni.
Ještě přidám:
- demo
- chybějící screen
- zdroják
- testovací data
- opravím strukturu db (asi je čas naučit se sql :( )
- je potřeba rozhodnout o té flash zprávě. mě to napadlo už když jsem to psal, jenomže pak jsem si vzpomněl, jak jsem byl v začátcích sám úplně vykulený z toho, jak to všechno samo od sebe funguje. Protože tohle je snad ještě jednodušší něž quickstart, nejsem si tím pořád jistý…
- Ondřej Mirtes
- Člen | 1536
Vrták: Tu tvojí továrničku jsem nějak nepochopil:
protected function createComponentMyForm(AppData $form)
{
$form = new AppForm($this, $name);
//...
}
Asi se ti tam něco smíchalo ;) Navíc fakt stačí ten jednodušší tvar, který víc oku a je míň WTF:
protected function createComponentMyForm()
{
$form = new AppForm;
//...
}
setDefaults v továrničce jde už dělat i bez připojení k rodiči, jediné, na co je brzké připojení potřeba, je tuším setAction/getAction, kterou stejně v MVC v 99% nepoužíváš.
- Majkl578
- Moderator | 1364
Ondřej Mirtes napsal(a):
setDefaults v továrničce jde už dělat i bez připojení k rodiči, jediné, na co je brzké připojení potřeba, je tuším setAction/getAction, kterou stejně v MVC v 99% nepoužíváš.
Co naplnění daty pro potřebu vytváření formuláře (dynamický počet prvků)?
- 22
- Člen | 1478
Může tedy někdo upřesnit, jak je to tedy s těmi formuláři:
protected function createComponentMyForm(AppData $form)
{
$form = new AppForm($this, $name);
//...
}
versus
protected function createComponentMyForm()
{
$form = new AppForm;
//...
}
… eventuelně uvést příklad, ve kterém ty parametry lze využít? Měl jsem za to, že je to pozůstatek z období, kdy formulář nešlo udělat přes továrničku. Sám to nikde nepoužívám a neměl jsem s tím ještě žádný problém.
- Ondřej Mirtes
- Člen | 1536
Továrnička
protected function createComponentMyForm(AppData $form)
{
$form = new AppForm($this, $name);
//...
}
je nesmysl. Třídu AppData neznám a ta továrnička předává parametr, který hned na prvním řádku přepíšu? He?
Co v Nette funguje, je:
protected function createComponentMyForm($name)
{
$form = new AppForm($this, $name);
//...
}
přičemž v $name se předá
lcfirst(název metody za createComponent)
(tedy
myForm
).
Ale nevidím v tom smysl, od úpravy formulářů, které to anchorování tak brzo už nepotřebují, není toto brzké připojování potřeba.
Majkl578: Co mi brání mít nějaký foreach
v továrničce
nebo v action* metodě, stále bez brzkého připojení k rodiči?
- PJK
- Člen | 70
Vážení, „last call“, pokud máte nějaké připomínky ještě před přidáním na stránku tutoriálů, rychle sem s nimi…
- vrtakovy a majklovy připomínky jsem zohlednil
- děkuji všem za opravy chib a peřlekpů
https://pla.nette.org/…tvarime-blog
http://nette-blogtut.pavelkalvoda.com/ -btw, neznáte nějaký takový hostmonster s php 5.3+ ?
- Patrik Votoček
- Člen | 2221
Ondřej Mirtes napsal(a):
Továrnička
je nesmysl. Třídu AppData neznám a ta továrnička předává parametr, který hned na prvním řádku přepíšu? He?
Sorry upsal jsem se…
Ale nevidím v tom smysl, od úpravy formulářů, které to anchorování tak brzo už nepotřebují, není toto brzké připojování potřeba.
Pokud je získání výchozích dat náročnější, například dotazem
do databáze, můžeme jejich nastavení uzavřít do podmínky if
($form->isSubmitted()) { … }. Tato metoda bude ale fungovat pouze
v případě, že formulář již je připojen k rodiči jako komponenta.
($form = new Nette\Application\AppForm($this, $name);)
- Ondřej Mirtes
- Člen | 1536
Ta poznamka o tovarnicce byla pro 22, ja poznal, ze je to preklep :)
isSubmitted – Ja jsem nesetrny a vychozi data nastavuju, i kdyz se jedna o odeslani formulare. Nepovazuju to za chybu, spis naopak – formular by mohl chtit s temi daty nejak pracovat.
- Patrik Votoček
- Člen | 2221
Jasný no… Já to dělám taky… Já to uvedl jenom jako příklad toho proč připojit formulář hned (je to méně náchylné na potencionální chyby).
Edit: tak jsem to prolít a už snad nemám co vytknout. Jenom snad aby jsi pro příště používal takové to zaškrtávátko „minor edit“ a nespamoval nám changes