Nový Quickstart – diskuze
- err
- Člen | 77
Prihlasovani uzivatelu
– Na zacatek souboru misto use Nette\Security as NS pridat jeste load dalsich trid pro UI a Form (pouzite dale fe funkcich):
use Nette\Application\UI,
Nette\Application\UI\Form,
Nette\Security as NS;
Uprava session v souboru bootstrap.php vyvola chybu:
Unable to set ‚session.gc_maxlifetime‘ to value ‚2592000‘ when session
has been started by session.auto_start or session_start()
zatim jsem radek $container->session->setExpiration(‚+30 days‘);
zakomentoval . Musim si zkontrolovat nastaveni na serveru.
Editoval err (31. 12. 2011 19:26)
- lejn
- Člen | 1
V části o komponentách je úplně dole v metodě render():
$this->template->tasks = $this->selection;
funguje až když opravím na:
$this->template->tasks = $this->tasks;
dále pak v Přihlašování uživatelů bych uvítal lepší popis změny hesla – není zde uvedena šablona a mě jako totálnímu začátečníkovi dalo zabrat, než jsem přišel jak na to (pomohl až github)
až na tyhle 2 věci se mi podařilo nový QS rozjet bez problémů a Pandovi patří moje hluboká poklona :-)
- bojovyletoun
- Člen | 667
Tak hlásím, že jsem zapracoval na tom quickstartu. Změny
zde
přidáno:
- obravení aktuálního tasklistu (zde se omylem přeformátovaly mezery před tagy)
- možnost označit úkol->done na obě strany, nebo ho smazat (obojí smí
jen neho autor)
- zde je i nějaký refaktoring,
- v modelu
- flashmessage
- invalidace
- zde je i nějaký refaktoring,
- zobrazení zpráviček v sidebaru @layoutu, tasklist->flashmessage() je předáno presenteru
- kapitola 9. Bohužel už jsem neměl sílu ji dokončit.
PS: dotazy ohledně gitu
- docela jsem měl boj, když udělal třeba 2 commity za sebou a zjistil, že v prvním chci něco změnit. Nevíte jak efektivně na to: tento návod byl pro mě dost užitečný, akorát v praxi to nevyšlo, tak jsem to občas hledal v reflogu. Hlavně nevím, co dělá rebase squash.
- podařilo se mi vytvořit ssh klíč na github, nebylo to úplně jedoduché
- taktéž shánění tortoisegitu nebylo přímočaré, chtělo to msysgit, nejdřív jsem našel něco, co instalovalo as 1.5GB.
- git podpora v netbeans je pěkná, akorát mi tam chybí některé věci, jako reflog, stash, amend.
- co když mám triviální problém, že si chci přepsat login v config.neon a tento soubor ignorovat? Případně lepší recept, vytvořit větev, kde bude změněný config, z ní vyvíjet změny, ale pushnout jen změny bez configu. (.gitignore neuměl ignorovat config.neon).
- Nakonec, jsem rád, že aspoň v gitu zvládnu základní věci.
- umí git rozlišit parcální změny? Např upravím soubor ne víc místech, ale pak si uvědomím, že z těch změn v 1 souboru chci 3 comitty? Jde dát do indexu jen část souboru?
- jak spravím detached head?
Editoval bojovyletoun (1. 1. 2012 20:27)
- voda
- Člen | 561
Nezkoumal jsem to moc podrobně, jen u db bych použil InnoDB a přidal cizí klíče.
PS: dotazy ohledně gitu
- docela jsem měl boj, když udělal třeba 2 commity za sebou a zjistil, že v prvním chci něco změnit. Nevíte jak efektivně na to: tento návod byl pro mě dost užitečný, akorát v praxi to nevyšlo, tak jsem to občas hledal v reflogu. Hlavně nevím, co dělá rebase squash.
Můj postup bývá:
git rebase -i HEAD~2
(nebo hash commitu)- změnit pick → edit u commitu, který chci změnit
- provedu změny
git commit -a --ammend
git rebase continue
squash sloučí změny z dvou commitů do jednoho.
- co když mám triviální problém, že si chci přepsat login v config.neon a tento soubor ignorovat? Případně lepší recept, vytvořit větev, kde bude změněný config, z ní vyvíjet změny, ale pushnout jen změny bez configu. (.gitignore neuměl ignorovat config.neon).
Pokud už je soubor v gitu přidán a chceš ho ignorovat, tak se musí
nejdříve odstranit (git rm
).
- umí git rozlišit parcální změny? Např upravím soubor ne víc místech, ale pak si uvědomím, že z těch změn v 1 souboru chci 3 comitty? Jde dát do indexu jen část souboru?
Lze to pomocí git add -i
. Pak vybrat patch
, vybrat
soubory ze kterých chci přidat změny a git pak postupně nabízí jednotlivé
změny a u každé lze vybrat jestli změny přidat nebo ne.
- jak spravím detached head?
To znamená že nejsi na žádné větvi a nemůžeš commitovat, takže
například jen git chechkout master
.
- RiskyNet
- Člen | 20
Musím se poklonit, dobrá práce pánové. Dostal jsem se k tomu až dnes a prošel jsem quickstartem jako nůž máslem.
Možná bych se jen také přimluvil za podrobnější popis změny hesla – nebo možná (a to mi přijde zajímavější) napsat to jako „domácí úkol“ k dokončení quickstartu (i když je za touto částí ještě AJAX, ale to už je taková třešinka). Dá se to, v tomto bodě už by měl mít každý představu o tom, co s tím má dělat (případně jen malinko navést). Tak jak je to nyní je to takové jako by nedokončené.
- marekz
- Člen | 1
err napsal(a):
jako uplny zacatecnik s nette podle tutorialu jedu a mam par poznamek neznaleho, seznamujiciho se cloveka:
– u struktury adresaru prosim dopsat pozadovana opravneni pro /temp a /log . jsou sice popsana dale v textu (po nacteni titulni stranky), ale pokud jsou prava nenastavena, server zahlasi nicnerikajici chybu 500 a nebylo intuitivni presto pokracovat v navodu a narazit na poznamku, ktera prava vysvetluje.
– Vytvoreni DB OK
– Model – zminka o vytvoreni noveho souboru Model.php v adresari model a tridu vlozit do nej. U funkci getTask, getTaskList atd. prosim dopiste, ze jsou to funkce teze tridy.
– Setup OK, authentizace take OK
– Presentery – zde jsem zmateny. Sice je nejdrive ukazan a HomepagePresenter, ale nasledujici modifikace mi jasne nejsou:
* spojeni s modelem – „Pro pohodlnější přístup si připravíme v presenteru atribut $model.“
Pokud jsem vlozil dle navodu a upravil funkci renderDefault, server po uprave default.latte hlasi opet chybu 500pokud jsem pochopil navod, ma to vypadat takhle:
class HomepagePresenter extends BasePresenter { /** @var Model */ private $model; public function startup() { parent::startup(); $this->model = $this->getService('model'); } public function renderDefault() { $this->template->tasks = $this->model->getTasks() ->where(array('done' => false))->order('created ASC'); } }
No a dal jsem se zatim nedostal. Ted zjistuji jak pustit debug. V logu serveru nic nemam.
Take by nebylo spatne projekt vystavit, cimz by vetsina dotazu odpadla. stacilo by se jen podivat.
V podstatě jsem se zasekl na tom samém. Chtělo by to zmínku o tom, že se má vytvořit soubor Model.php.
A dále chyba 500, řešil jsem to snad hodinu, než jsem se tady dočetl, že stačí vymazat CACHE paměť. Taky by se hodilo napsat alespoň do poznámek. :)
Jinak zatím funguje vše jak má, díky.
- gebauer
- Člen | 1
https://doc.nette.org/…thentication – v části o vytváření formuláře pro změnu hesla není zmíněno vložení odkazu na stránku s tímto formulářem. Například v @layout.latte může být
...<a n:href="signOut!">Odhlásit se</a> | <a n:href="User:">Změnit heslo</a> ....
https://doc.nette.org/cs/quickstart – soubor ajax.js musí podle http://docs.jquery.com/…jQuery_Works#… začínat:
$().ready(function(){
a končit:
});
- Jan Tvrdík
- Nette guru | 2595
gebauer wrote:
https://doc.nette.org/cs/quickstart – soubor ajax.js musí podle http://docs.jquery.com/…jQuery_Works#… začínat:
Používají se live události, čekat na dom ready tedy netřeba.
- Jan Suchánek
- Člen | 404
Super práce Pando! Je lepší definovat model v startup() nebo metodě setContext? Dík za info :)
- edmund
- Člen | 28
Drobná připomínka začátečníka: Zkouším jet podle nového návodu a dost dlouho jsem se zasekl na tom, že soubor Model.php musí začínat <?php a nestačí do něj nakopírovat to, co je v ukázce v návodu. Já vím, že je to prkotina a takhle zpětně je mi to naprosto jasný proč to tam musí být. Ale než mi to docvaklo tak to pár hodin dalo :-)
- vaiwa
- Člen | 4
A zdrojové kódy bych opravdu přidal, některé sekce mi úplně neznalému začátečníkovi přijdou trošku nejasné a možnost podívat se pro jistotu do kódu by pomohla..
například si nejsem jistý kam dopsat například
public function renderDefault($id)
{
$this->template->taskList = $this->taskList;
$this->template->tasks = $this->taskList->related('task')->order('created');
}
Beru že se asi pokračuje v kodu, ale věta „Získaný záznam spolu se seznamem úkolů předáme šabloně v metodě renderDefault()“ mě zbudila touhu napsat ten kód někam do templates..
- vaiwa
- Člen | 4
S tím jak je jeden soubor .php, druhý .latte, třetí .neon se to imho
fakt hodí ;)
Fakt jsem chvilku přemýšlel jestli tam tu značku dát, v návodu opravdu
chybí a přece teď nemůžu být chytřejší než návod..
Ještě off topic, měl jsem při průběhu chybku s nefunkčním htaccess, které vyvolala trošku jiné chování. Možná by stálo za to, na to na patřičném místě upozornit? viz odkaz na forum
- vafliik
- Člen | 4
Nádherný tutoriál. Čte se to výborně, dělat podle něj je zábava a
člověk se toho hodně naučí.
Vážně smekám a díky za něj.
Jediné, co mi stále zůstává trochu záhadou je MVP. To je můj problém už delší dobu, pořád trošku tápu, kdy vytvořit další model a kdy postačí jeden. Snažil jsem se k tomu načíst nějakou teorii na různých místech (včetně Nette dokumentace a fóra), ale mám v tom spíš ještě větší zmatek.
Quickstart používá jen jeden model „Model“, takže zase vim prd :) Moc
by pomohlo (a doufám, že nejen mě), kdyby tam bylo třeba i zmíněný, kdy
by se vyplatilo použít víc modelů a jak by to vypadalo v praxi.
Třeba jak by se modely definovaly v konfiguračním souboru.
Každpoádně ještě jednou děkuju za skvělou práci.
- edmund
- Člen | 28
gebauer napsal(a):
https://doc.nette.org/…thentication – v části o vytváření formuláře pro změnu hesla není zmíněno vložení odkazu na stránku s tímto formulářem. Například v @layout.latte může být
...<a n:href="signOut!">Odhlásit se</a> | <a n:href="User:">Změnit heslo</a> ....
Chybí také (nebo jsem fakt slepej) informace o tom, kam a jaký kod zapsat pro zobrazení formuláře na změnu hesla.
- regiss
- Člen | 61
Zdravim,
zasekl jsem se na chvili v useku: Vytvareni presenteru konkretne v sablone
<td>{$task->user->name}</td>
Ladenka hlasi: No reference found for $task->user
Bylo by dobre zminit v navodu, ze se musi pouzit cizi klice. Bez cizich klicu mi pokazde vyskocila ladenka.
Toto mi nefungovalo:
Povšimněte si názvu sloupečků, které se odkazují na jiné tabulky. Jsou vždy ve formátu <tabulka>_id. Na základě pojmenování pak Nette\Database dokáže obě tabulky spojit. Jedná se o konvenci, kterou Nette\Database přejímá od knihovny NotORM.
Dalsi error by s makerem
app/components/TaskList.latte
<tr n:class="$iterator->isOdd() ? odd : even"> Ladenka hlasi => Undefined variable: iterator
musle jsem prepsat do
<tr class="{$iterator->isOdd() ? odd : even}">
Edit: Fixnuto ve verzi Nette Framework 2.0-rc2 pro PHP 5.3
Poznamka: Table engine InnoDB, NetteFramework-2.0rc1-PHP5.3, windows7 x64, IIS7 + mod rewrite
Editoval regiss (28. 1. 2012 9:52)
- regiss
- Člen | 61
Napad na rozsireni
Osobne ocenuji navod jak vytvorit a pouzivat componenty v QS, skvela prace
- Idealni by bylo, kdyby QS prosel celou dokumentaci a vyuzil jednotlive Top Features
- Vyuziti editable datagridu ⇒ jak je implementovano v admineru (pravdepodobne je vyuzit datagrid?)
- Implementace ACL
- regiss
- Člen | 61
TO: hAssassin Chapu obavy z rozsirovani quick startu. Na druhou stranu si myslim, ze Quick start ovlivni 90% nove prichozich uzivatelu. Tzn vsichni budou pouzivat struktury, ktere se zde naucili. Tolik ucelenych a nazorne ukazanych prikladu jsem v zadnem jinem tutorialu nevidel.
Neni prece problem zalozit novy tutorial ‚Stavime na Quick Startu‘ a pokracovat ve stejnem duchu. Tim, ze se v QS vysvetluje proc a jak se jednotlive veci delaji se programator uci a hlavne chape Nette v celku.
- PaKo
- Člen | 1
Quickstart | Vytvoření presenteru | Navigace
Zdravím. Podle Quickstartu jsem došel až k vyvolání view „notFound“,
nicméně před popisovanými úpravami mi laděnka vyhazuje chybu:
Nette\Application\BadRequestException #404
Source file
File: .../libs/Nette/Application/Application.php Line: 107
105: if (!$request instanceof Request) {
106: $request = NULL;
107: throw new BadRequestException('No route for HTTP request.');
108: }
----
Call stack
.../app/bootstrap.php:45 source ► Nette\Application\Application-> run ()
43: $application = $container->application;
44: $application->errorPresenter = 'Error';
45: $application->run();
a ne chybu:
Fatal Error
jak je popsáno
Použil jsem Nette 2.0 stable pro PHP 5.3
Kde je zakopaný pes?
Díky,
P.
- tatyalien
- Člen | 239
Jak psal regiss, bylo by dobré, kdyby u kroku database bylo zmíněno, že je potřeba použít innoDb + cizí klíče, skákala mě laděnka až po pročtení fóra jsem na to tady narazil… případně opravit sql dotaz na tvorbu databáze, aby to rovnou vytvořilo innodb ;)
PS na stránce authentication je
Access level to SecuredPresenter::startup() must be public (as in class BasePresenter)
Po opravení na public vše funguje.
Editoval tatyalien (21. 2. 2012 11:07)
- Panda
- Člen | 569
Dnes jsem celý quickstart zrevidoval a aktualizoval pro Nette verze 2.0 stable. Snad jsem na nic nezapomněl a snad bude vše funkční. Byl bych rád, kdyby se našla nějaká duše, která by QS prošla a zkontrolovala.
K velkým změnám patří přepsaný model – nyní to jsou již 3 třídy místo jednoho „modelu“ a registrují se jako factorky.
Taky jsem zdrojáky přesunul na githubu pod Nette a doplnil pod každou kapitolu odkaz na stažení.
K InnoDB: pro účely routování budu ještě do struktury databáze ještě zasahovat, nová verze SQL skriptu bude mít v sobě uvedeno ENGINE=InnoDB. Zatím tam napíšu poznámku.
K rozšiřování quickstartu – QS se samozřejmě rozšiřovat bude. Nebude to však už quickstart, ale rozšiřující tutoriály. Pak by to totiž nebylo quick. ;-) Už takhle s tím jistě dostatek začátečníků válčí déle, než jedno odpoledne. Pokud se nenajde dobrý důvod, tak QS zůstane v rozsahu, jak je naznačeno v obsahu.
- MartyIX
- Člen | 217
https://forum.nette.org/…can-i-get-it – Asi se casem zacnou rojit podobne dotazy. Rad prilozim ruku k dilu az budu mit volneji.
Navrhoval bych:
- Pridat quickstart sem: https://dev.nette.org/…tav-prekladu – nyni se mylne zda, ze je prelozeno vse.
- Rozebrat temata a pomalu zacit prekladat, stejne jako to bylo u zbytku dokumentace.
- esorimer
- Člen | 114
Zdravim,
tak jsem si jakožto úplný začátečník prošel quickstartem a všechno mi
funguje :) Mám jen pár drobností k vylepšení:
SQL kód pro vytvoření tabulek v textu není funkční, protože se první vytvářená tabulka task odkazuje na neexistující tabulky (v SQL ke stažení už je to ok).
V části o Ajaxu se používá jQuery metoda .live, která už je
deprecated.
Na to jak rozchodit flash zprávy s Ajaxem jsem přišel už sám, ale možná
by to tam taky mohlo být zmíněno :)
V www/.htacces jsem musel přidat pod „RewriteEngine On“ „RewriteBase /~mojejmeno/quickstart/www“ aby to fungovalo. Myslím že by mělo být v quickstartu zmíněno, že to pro některé nastavení apache je potřeba .
A to je vše. Doufám že bude brzo další díl!
- noh
- Člen | 9
Stáhl jsem si nette-quick-start-02_model-0-ga72b4f6.zip
Vůbec jsem nepochopil jak se dostanu na aplikaci Todo listu.
Zvládl jsem snad nastavit připojení k MySql, založení databáze a po
přehození
pořadí import struktury tabulek.
Aplikaci spouštím http://127.0.0.1/netteqs/www/
(nettegs jsem si udělal pod Apache alias na adresář tutorial)
Zobrazí se mi jako úvodní stránka:
Congratulations!
You have successfully created your Nette Framework project.
Explore source codes
See source code of this page template, layout template and corresponding
presenter. And feel free to modify them!
Manage database tables
Manage your database using pre-installed tool Adminer with an easy to use
GUI.
Read
Quick-start tutorial
Prostě nechápu jak se odsud dostanu na vstupní menu aplikace Todo
listu.
Pokud to má někdo opravené a vylepšené tak, že to funguje, mohl bych
poprosit o zasláni zipu?
- Darkry
- Člen | 101
noh:
Pokud jsem tě dobře pochopil tak sis stáhnul soubor, kde je aplikace teprve
po vykonání 2. části quickstartu a tam je nastaveno teprve připojení
k databázi. Pak pokračuj dalším dílem (https://doc.nette.org/cs/quickstart
). Pokud chceš už finální hotovou aplikace, tak si stáhni soubor na konci
posledního dílu: (soubor zde)
- dnd
- Člen | 16
Předem děkuji za QS. I přes pár komplikací vzniklých změnami mezi
mým začátkem 25.1 a včerejškem, kdy jsem se k tomu opět vrátil, se mi
podařilo překonat rozdíly a již si vychutnávám výborně naservírovaný
text.
Narazil jsem na problém s AllowOverride, zabral mi dost času, tak uvádím
své celé konečné řešení na localhostu. Nejdříve jsem ale QS rozběhl na
ostrém (externím) serveru ve firmě a tam tedy nevím, jaké změny kde
provést, aby „AllowOverride All“ pro QS projekt v dané podsložce
firemních stránek (tedy adresa 3. úrovně) dn1.firma.cz
fungoval.
err napsal(a):
Je to tak. Doplnil jsem do virualu a je to OK. Omlouvam se tedy. pro poradek: doplnil jsem do rootu Virtual serveru RewriteEngine On a do Directory AllowOverride All . Struktura tedy vypada :
<VirtualHost *:80>
…
RewriteEngine On
<Directory />
AllowOverride All
</Directory>
</VirtualHost>
Řešení problému (QS – krok Vytvoření presenteru task)
The requested URL /task/default/1 was not found on this server.
Jak píše Panda, RewriteEngine On potřeba nebylo, ale AllowOverride All ano. Ovšem trvalo mi, než jsem přišel na to, jak to správně v httpd.conf nastavit. Tak tedy pro můj virtual jen pro tento QS projekt mám celý zápis takto:
<VirtualHost 127.0.0.1:80>
DocumentRoot „G:/www/dn1/www“
ServerName dn1.cz
RewriteEngine On
<Directory „G:/www/dn1/www/“>
AllowOverride All
</Directory>
</VirtualHost>
Editoval dnd (19. 3. 2012 19:23)
- noh
- Člen | 9
Darkry napsal(a):
noh:
Pokud jsem tě dobře pochopil tak sis stáhnul soubor, kde je aplikace teprve po vykonání 2. části quickstartu a tam je nastaveno teprve připojení k databázi. Pak pokračuj dalším dílem (https://doc.nette.org/cs/quickstart ). Pokud chceš už finální hotovou aplikace, tak si stáhni soubor na konci posledního dílu: (soubor zde)
Zřejmě mám chybně nastaven httpd.conf nebo alias .conf
chyba z access logu
127.0.0.1 – – [03/Apr/2012:16:53:55 +0200] „GET /gsf/www/sign/in
HTTP/1.1“ 404 232
chyba z error logu
[Tue Apr 03 16:53:55 2012] [error] [client 127.0.0.1] File does not exist:
D:/wamp/www/wamp, referer: http://localhost/gsf/
gsf.conf vypadá takto:
Alias /gsf/ „d:/wamp/apps/netteqsfin/“
<Directory „d:/wamp/apps/netteqsfin/“>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Allow from all
</Directory>
httpd.conf:
…
LoadModule rewrite_module modules/mod_rewrite.so
…
Include „d:/wamp/alias/*“
Něco je blbě, fakt nevím…
- noh
- Člen | 9
noh napsal(a):
Darkry napsal(a):
noh:
Pokud jsem tě dobře pochopil tak sis stáhnul soubor, kde je aplikace teprve po vykonání 2. části quickstartu a tam je nastaveno teprve připojení k databázi. Pak pokračuj dalším dílem (https://doc.nette.org/cs/quickstart ). Pokud chceš už finální hotovou aplikace, tak si stáhni soubor na konci posledního dílu: (soubor zde)Zřejmě mám chybně nastaven httpd.conf nebo alias .conf
chyba z access logu
127.0.0.1 – – [03/Apr/2012:16:53:55 +0200] „GET /gsf/www/sign/in HTTP/1.1“ 404 232
chyba z error logu
[Tue Apr 03 16:53:55 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/wamp, referer: http://localhost/gsf/gsf.conf vypadá takto:
Alias /gsf/ „d:/wamp/apps/netteqsfin/“
<Directory „d:/wamp/apps/netteqsfin/“>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Allow from all
</Directory>httpd.conf:
…
LoadModule rewrite_module modules/mod_rewrite.so
…
Include „d:/wamp/alias/*“Něco je blbě, fakt nevím…
Takže jako začátečník jsem nakonec příklad rozchodil lokálně pod XAMPP (W7). U WAMPSERVERu je nějaký problém s nastavením httpd.conf, který jsem nebyl schopen vyřešit, prostě tam mi to „duplikovalo“ části cesty, což jsem poznal z logu – takto „d:/wamp/www/wamp“.
Editoval noh (5. 4. 2012 21:35)
- Stepan Kabele
- Člen | 3
Bylo by třeba opravit SQL skripty na InnoDB, jinak v šabloněl
default.latte nefunguje konstrukce $task->user->name
(viz. https://forum.nette.org/…tart-diskuze)
quickstart.mysql.sql :
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE `task` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`text` varchar(100) NOT NULL,
`created` datetime NOT NULL,
`done` tinyint(1) unsigned NOT NULL DEFAULT 0,
`user_id` int(10) unsigned NOT NULL,
`tasklist_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `order` (`tasklist_id`,`done`,`created`),
INDEX `fk_user` (`user_id`),
CONSTRAINT `fk_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`),
CONSTRAINT `fk_tasklist` FOREIGN KEY (`tasklist_id`) REFERENCES `tasklist` (`id`)
) ENGINE=InnoDB;
CREATE TABLE `tasklist` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` char(128) NOT NULL,
`name` varchar(30) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB;
SET FOREIGN_KEY_CHECKS=1;
data.mysql.sql :
SET FOREIGN_KEY_CHECKS=0;
INSERT INTO `task` (`id`, `text`, `created`, `done`, `user_id`, `tasklist_id`) VALUES
(1, 'Provést analýzu', '2011-12-06 12:30:00', 1, 2, 1),
(2, 'Implementace úkolníčku', '2011-12-06 12:35:50', 0, 3, 1),
(3, 'Sepsání dokumentace', '2011-12-07 16:23:30', 0, 2, 1),
(4, 'Opravit chybu #42', '2011-12-10 16:10:40', 0, 3, 2),
(5, 'Zavolat klientovi', '2011-12-10 17:44:32', 0, 2, 2),
(6, 'SWOT analýza', '2011-12-12 10:42:31', 0, 2, 3),
(7, 'Analýza trhu', '2011-12-12 10:53:13', 0, 3, 3),
(8, 'Opravit chybu #51', '2011-12-12 14:10:05', 0, 3, 2),
(9, 'Nastavení serveru', '2011-12-13 17:52:14', 0, 2, 3),
(10, 'Benchmark nového stroje', '2011-12-15 11:21:52', 1, 2, 3);
INSERT INTO `tasklist` (`id`, `title`) VALUES
(1, 'Projekt A'),
(2, 'Projekt B'),
(3, 'Projekt C');
INSERT INTO `user` (`id`, `username`, `password`, `name`) VALUES
(1, 'admin', 'c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec', 'Administrátor'),
(2, 'pepa', 'decffc27874ea35eb06aa728dd2b9a77197580e7456668ae90aa8db229e59ba4e6aac7b8d5fc1a7dcaee9cee1455044f1396e1cf1f50536604881138d0bea5e9', 'Josef Novák'),
(3, 'franta', '124fff6f6790abdcf629a04108af221614f883f18fced9f14268abdd5465d077f2fed7d620e370ca20dd392fa05dd357dd3d45fa37f226d7621852eec3326f82', 'František Novotný');
SET FOREIGN_KEY_CHECKS=1;
- jik
- Člen | 149
Začínám s Nette a pracuji s PostgreSQL. Aby quckstart běžel na postgresu, musí se provést:
- použít adresář libs ze sandboxu devel verze 2.1 (zde je jednak doplněn driver pgsql, jednak implementuje nějaké nové revize regulárů, které jsou v nových distribucích linuxu)
- protože user je v postgresu rezervované slovo, používám tabulku users. Myslím, že by se to mohlo sjednotit, když už se soubor jmenuje Users.php. Je nutno upravit app/models/Users.php:
<?php
use Nette\Database\Connection,
Nette\Database\Table\Selection;
class Users extends Selection {
public function __construct(Connection $connection) {
parent::__construct('users', $connection);
}
}
?>
- změnit deklaraci sloupce done tabulky task na boolean – myslím, že by to tak mělo být správně i pro mysql. Podobně musí být změněno pořadí tabulek. Deklarace tabulek vypadá takto:
CREATE TABLE tasklist (
id serial primary key,
title varchar(50) NOT NULL
);
CREATE TABLE users (
id serial primary key,
username varchar(20) unique,
password char(128) NOT NULL,
name varchar(30) NOT NULL
);
CREATE TABLE task (
id serial PRIMARY KEY,
text varchar(100),
created timestamp,
done boolean,
user_id int references users,
tasklist_id int references tasklist
);
INSERT INTO tasklist (title) VALUES
('Projekt A'),
('Projekt B'),
('Projekt C');
INSERT INTO users (username, password, name) VALUES
('admin', 'c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec', 'Administrátor'),
('pepa', 'decffc27874ea35eb06aa728dd2b9a77197580e7456668ae90aa8db229e59ba4e6aac7b8d5fc1a7dcaee9cee1455044f1396e1cf1f50536604881138d0bea5e9', 'Josef Novák'),
('franta', '124fff6f6790abdcf629a04108af221614f883f18fced9f14268abdd5465d077f2fed7d620e370ca20dd392fa05dd357dd3d45fa37f226d7621852eec3326f82', 'František Novotný');
INSERT INTO task (text, created, done, user_id, tasklist_id) VALUES
('Provést analýzu', '2011-12-06 12:30:00', true, 2, 1),
('Implementace úkolníčku', '2011-12-06 12:35:50', false, 3, 1),
('Sepsání dokumentace', '2011-12-07 16:23:30', false, 2, 1),
('Opravit chybu #42', '2011-12-10 16:10:40', false, 3, 2),
('Zavolat klientovi', '2011-12-10 17:44:32', false, 2, 2),
('SWOT analýza', '2011-12-12 10:42:31', false, 2, 3),
('Analýza trhu', '2011-12-12 10:53:13', false, 3, 3),
('Opravit chybu #51', '2011-12-12 14:10:05', false, 3, 2),
('Nastavení serveru', '2011-12-13 17:52:14', false, 2, 3),
('Benchmark nového stroje', '2011-12-15 11:21:52', false, 2, 3)
- jik
- Člen | 149
HosipLan napsal(a):
Table\Selection
se nedědí. Opravená kapitola quickstartu
To vypadá zajímavě. Ale (jako začátečník) k tomu mám pár (hloupých) dotazů:
- Kdy bude pokračování? (teď jsem rád, že mě to alespoň nějak začalo poslouchat a už vidím velké změny)
- Ten skript Task.php vypadá jako docela obecná záležitost. Nemělo by něco takového být přímo součástí Nette?
- Jan Endel
- Člen | 1016
- Jsem tvůrce těchto úprav, zatím jsou ve stádiu vývoje, bohužel teď mi dost času bere moje práce, takže opravdu nevím, kdy se dostanu k jeho pokračování. Ale pokusím se co nejdříve.
- Asi myslíš Table.php to opravdu nemůže být součástí Nette, o tuhle část se ani starat nemá, navíc mnoho z nás nepoužívá Nette\Database ale jinou databázovou vrstvu.
- Tomas P
- Člen | 27
Ahoj,
v Nette zacinam, presiel som si quickstart… narazil som na zopar preklepov
ktore by som rad reportoval. Tiez som pridal par poznamok (in my humble
opinion). Kazdopadne, quickstart je super, som docela rad ze nieco take existuje
a niekto tomu venuje cas, len tak dalej.
https://doc.nette.org/cs/quickstart
SQL:
zamenit poradie vytvaranych tabuliek kvoli FK (script vypina FK, ale ukazka kodu
nie)
data.mysql.sql – zamenit poradie, aleby vypinat FK
„již má základní databáze operace“ → databazove operace
„ji využijeme při implementace přihlašování uživatelů.“ → pri implementaci prihlasovani
v popise „Sekce factories je…“ by bolo dobre mat zopar linkov na navrhove vzory Factory, Singleton atd.
„právě objekt typu Nette\Database\Table\Selection, která jsme použili“ → ktery jsme pouzili
„které budeme v dále v aplikaci používat“ → bez ‚v‘
https://doc.nette.org/cs/quickstart
doplnit „třídy modelu šikovně definovali jako továrny“, ze sa tak udialo v konfiguracii
„nám v panelu přibyla nový položka“ → nova polozka
„Nyní bychom již na stránce měli vidět jednoduché menu. Kliknutím se dostaneme na výpis konkrétního seznamu úkolů.“ → tu by bolo dobre zmienit sa o RewriteBase a ako ho prepisat .htaccess – mozno aj skor by sa to hodilo, kedze bez toho to robi len HTTP 500, internal server error
https://doc.nette.org/…thentication
„vrátí objekt s identiou uživatele“ → identitou
„Metoda startup() proběhne na začátku“ → porovnat s __construct(), aky je rozdiel, preco je lepsie pouzivat toto na inicializaciu (aby to bolo jasne), tusim nevolanie parent::startup() ohlasi chybu, takze sa aplikacia ani nezapne
https://doc.nette.org/cs/quickstart
„Nyní by i přidivání úkolů“ → pridavani ukolu
- Filip Procházka
- Moderator | 4668
Tomáši, poprosil bych tě, aby sis řekl o práva a chyby opravil sám :)
- Pavel Kouřil
- Člen | 128
No; mám docela zásadní otázku ohledně nového Quick Startu (ať už pro stálejší uživatele, ale (hlavně) i pro nováčky).
Chcete, aby komentáře v kódu a phpDoc byly psány česky nebo anglicky?
- regiss
- Člen | 61
Ahoj napadlo me, ze pokracovani quickstartu by melo byt trochu v jinem
stylu.
Vzal bych stavajici quickstart a pridal bych Testy a Dokumentovani kodu. Mohlo
by to byt napsane stejnou zabavnou formou (ktera je IMHO uplne super) Vedlo by
to k lepsimu kodu pro vsechny nebot spousta lidi vychazi hlavne s QS