Nový Quickstart – diskuze

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

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)

davidm
Člen | 81
+
0
-

nvm nakolik si uvedomujes rozdil mezi protected a public, ale tady to fakt menit nemusis :) Tady naopak prave protected ma byt protoze by createComponent nemelo byt pristupne zvenku (zvenku control ziskas pres getComponent)

err
Člen | 77
+
0
-

Mas pravdu. Mazu to.

lejn
Člen | 1
+
0
-

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 :-)

uestla
Backer | 799
+
0
-

Mám dotaz, plánuje-li se přidat $application->storeRequest() do SecuredPresenteru a $application->restoreRequest() do SignPresenter::signInFormSubmitted()?

Děkuji.

bojovyletoun
Člen | 667
+
0
-

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

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á:

  1. git rebase -i HEAD~2 (nebo hash commitu)
  2. změnit pick → edit u commitu, který chci změnit
  3. provedu změny
  4. git commit -a --ammend
  5. 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
+
0
-

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

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 500

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

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

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

Super práce Pando! Je lepší definovat model v startup() nebo metodě setContext? Dík za info :)

edmund
Člen | 28
+
0
-

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 :-)

Jan Tvrdík
Nette guru | 2595
+
0
-

Otevírací značku <?php jsem doplnil. Snad to někomu pomůže.

vaiwa
Člen | 4
+
0
-

Podobně na stránce TaskPresenteru, by uvedení otevírací značky <?php pomohlo

vaiwa
Člen | 4
+
0
-

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..

22
Člen | 1478
+
0
-

To fakt myslíte vážně s těma php značkama? Copak vám nějaký PHP script může jet bez toho? :-)

vaiwa
Člen | 4
+
0
-

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

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

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

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

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
hAssassin
Člen | 293
+
0
-

regiss > osobne si myslim ze by to bylo super, kdyby ke kazdymu top ficurce existoval nejaky komplexnejsi navod, ale na druhou stranu tohle nepatri do QS (uz od jeho nazvu by to pak moc quick nebylo), ale vhodnejsi by bylo tyhle navody umistovat do kucharky do tutorialu.

regiss
Člen | 61
+
0
-

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

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

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)

jik
Člen | 149
+
0
-

Také se přimlouvám za připsání poznámky o InnoDB do QS. Stálo to dost času.

Panda
Člen | 569
+
0
-

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

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:

  1. Pridat quickstart sem: https://dev.nette.org/…tav-prekladu – nyni se mylne zda, ze je prelozeno vse.
  2. Rozebrat temata a pomalu zacit prekladat, stejne jako to bylo u zbytku dokumentace.
esorimer
Člen | 114
+
0
-

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

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

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

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

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

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)

frances
Člen | 24
+
0
-

Bude pokracovaní? Hlavne me zajima to routovani. Diky

stevkopr
Člen | 9
+
0
-

Zdravím, rád by som sa opítal kedy budú dokončené zvyšne 2 diely Quick Startu. Vopred ďakujem za odpoveď!

Stepan Kabele
Člen | 3
+
0
-

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

Začínám s Nette a pracuji s PostgreSQL. Aby quckstart běžel na postgresu, musí se provést:

  1. 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)
  2. 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);
        }
}
?>
  1. 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)
Filip Procházka
Moderator | 4668
+
0
-

Table\Selection se nedědí. Opravená kapitola quickstartu

jik
Člen | 149
+
0
-

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ů:

  1. 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)
  2. 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
+
0
-
  1. 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.
  2. 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.
jik
Člen | 149
+
0
-

Ještě jednu poznámku k připravovanému quickstartu: Sice manuál mysql říká, že tinyint je synonymem booleanu, ale v dalších databázích (postgresql) tomu tak není. Proto si myslím, že by bylo lepší uvést typ boolean – ať mají experimentátoři méně nejasností.

Tomas P
Člen | 27
+
0
-

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

Tomáši, poprosil bych tě, aby sis řekl o práva a chyby opravil sám :)

Pavel Kouřil
Člen | 128
+
0
-

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?

Filip Procházka
Moderator | 4668
+
0
-

Rozhodně. V repozitaři by měly být anglicky.

regiss
Člen | 61
+
0
-

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

22
Člen | 1478
+
0
-

Testy ani psaní phpDoc v QS určitě nemá co dělat a s Nette nijak nesouvisí…

regiss
Člen | 61
+
0
-

22 napsal(a):

Testy ani psaní phpDoc v QS určitě nemá co dělat a s Nette nijak nesouvisí…

Prave proto jsem napsal pokracovani QS :) Myslim si ze by to melo souviset s Nette, vsichni se snazime o co nejvice dokonaly/cisty kod a k tomu patri testy a dokumentace