Aktuálně funkční návod na doctrine v nette (září 2023)

elx
Člen | 2
+
+1
-

Ahoj,
dříve jsem doctrine v nette nepoužíval, chtěl bych to poprvé zkusit.
Existuje prosím někde aktuální funkční návod / postup jak to v nette zprovoznit?

Zkoušel jsem toto:
https://contributte.org/…ine-orm.html
ale podle toho návodu to nejde nainstalovat.

Konkrétně:
Vytvořím web-project
composer create-project nette/web-project

A dále postupuju krok po kroku podle návodu, tedy:
OK – composer require nettrine/orm
OK – composer require nettrine/dbal

CHYBA – composer require nettrine/cache
Problem 1
 – Root composer.json requires nettrine/cache ^0.4.1, found nettrine/cache[v0.4.1] but these were not loaded, likely because it conflicts with another require.
Problem 2
 – nettrine/orm is locked to version v0.8.4 and an update of this package was not requested.
 – nettrine/orm v0.8.4 requires nettrine/cache ^0.3.0 || ^0.4.0 → found nettrine/cache[v0.3.0, v0.4.0, v0.4.1] but these were not loaded, likely because it conflicts with another require.
Problem 3
 – nettrine/dbal is locked to version v0.8.2 and an update of this package was not requested.
 – nettrine/dbal v0.8.2 requires nettrine/cache ^0.3.0 → found nettrine/cache[v0.3.0] but it conflicts with your root composer.json require (^0.4.1).

Nabízí to „řešení“ composer require nettrine/cache:*
Takže jsem to udělal, nicméně zdá se, že se nic nestalo a zůstala tam původní verze. Asi ok?

Dále tedy zaregistruju do configu

extensions:
	nettrine.orm: Nettrine\ORM\DI\OrmExtension
	nettrine.orm.cache: Nettrine\ORM\DI\OrmCacheExtension
	nettrine.dbal: Nettrine\DBAL\DI\DbalExtension

A skončím chybou a ať už zkouším cokoli, nerozjede se to.
Service of type Doctrine\DBAL\Connection not found.

V tom „návodu“ taky vůbec není nic uvedeno o tom, že by se to mělo připojit k nějaké databázi – host, login, heslo, driver, apod…

Některé parametry do konfigurace connection jsem si vyzobal tady z doctrine-skeleton: https://github.com/…ine-skeleton, přes tu chybu jsem se ale nedostal.
Nechci použít celý ten skeleton, je tam spousta balíčků, které ani nevím k čemu jsou, potřeboval bych jen doctrine s migracema a asi anotations..

Editoval elx (6. 9. 2023 11:55)

Lumeriol
Generous Backer | 63
+
+2
-

Ahoj,

problém je, že se řídíš pouze návodem pro Nettrine/Orm, ale už nikoliv návodem pro Nettrine/Dbal, který chceš také použít. Orm je nadstavba pro Dbal a v něm najdeš konfiguraci pro připojení k databázi samotné.

Případně můžeš vyzkoušet konkurenční řešení v podobě Nextras Orm a Dbal.

elx
Člen | 2
+
0
-

Díky :) Neuvěřitelné, člověk u toho sedí do půlnoci a dalších pár hodin ráno… a taková pitomost :D

grovik
Člen | 69
+
+1
-

Jo tak ty návody jsou naprostý chaos.
Podobné starosti, s každou verzí s něco změní.
Návaznosti komponent pro to aby to chodilo nejsou nikde popsané. Aby to běželo člověk slepí tři návody do jednoho. Příšerná magie a když se něco rozsype tak neví jak na to :-/.

Jakože pokud by byl zájem nebylo by od věci ten návod vytvořit, ale z druhé strany by to chtělo konzultaci s autory aby to nebyl návod na jednu verzi.

Felix
Nette Core | 1196
+
0
-

Ahoj @grovik, ja jsem autorem tech rozsireni ✋

Budu moc rad, kdyz mi nadhodis par napadu jak to udelat lepe. Aby se v tom vyvojari vyznali.

grovik
Člen | 69
+
0
-

@Felix Super… já tu mám vlákno jak správně nakonfigurovat Custom Typy v Nettrine. Vyznělo to do prázdna.
Třeba tohle mě teď už několik dní trápí.
V Doctrině je to věc používající metodu Type::addType().
Na dokumentaci obecně mi vadí ta roztříštěnost.
Jednu část informací mám z webu Contibutte, další část se najde na GitHubu… občas někde úplně jinde. Navíc mám pocit, že tam hraje aktuálnost dost výraznou roli.

Mě se ten balíček líbí a proto jsem si ho zkusil nainstalovat a rozběhnout s tím, že bych ho rád využil v mém projektu na kterém dělám, ale po třeba 15 hodinách blbnutí, se stále točím v kruzích :D. To, že mi to nešlo, mě vedlo ke změně Anotací na Atributy, což vedlo k nefunkčnosti a překopání konfigurace a atd atd. Možná by pomohlo, udělat nějakou základní funkční konfiguraci a tu při instalaci balíčku hodit do configu.
Dát do ní komentáře co je co a k čemu je to dobré. Co je potřeba co ne. Atd.
Za mě by byl lepší okomentovaný kód a ideálně i česky (protože občas mám pocit, že se něco ztrácí v překladu :D).

Klidně poprosím o nasměrování. Nebo můžu zkusit přiložit ruku k dílu. Na psaní dokumentace ale moc dobrý nejsem :D.
Jinak samozřejmě, díky za všechnu práci. Já bych se k tomu nedokopal, takže z toho mám radost.

Editoval grovik (12. 3. 21:53)

Felix
Nette Core | 1196
+
0
-

Za me je nejlepsi zkouset nejaky z predpripravenych skeletonu.

https://github.com/contributte/?…

grovik
Člen | 69
+
+1
-

Felix napsal(a):

Za me je nejlepsi zkouset nejaky z predpripravenych skeletonu.

https://github.com/contributte/?…

To jsem zkoušel… ale v momentě kdy si to chci udělat od nuly po svém je mi to na knedlík :D.
Já se ty věci snažím pochopit jako celek abych povědomí jak co funguje. Což je těžké (se mnou ;-) ).
Třeba jak jsem ve vedlejším vlákně řešil to přidání typů.
Docela by se šiklo, mít konfig Doctriny a Nettrine vedle sebe a říct, tohle je tady a když je někde návod a ten do dává v Doctrine sem, tak v Nettrine to bude tady.

To by dost usnadnilo případné řešení problémů. Méně pokus omyl času více tref na jistotu.

Editoval grovik (9. 11. 5:05)

grovik
Člen | 69
+
+3
-

Teď jsem se pokoušel rozběhat Nettrine přímo z repozitáře s předpřipraveným projektem a nepovedlo se. Potažmo, pokud jsem chtěl použít novější zápis pomocí anotací přestalo to fungovat.
Po asi hodině blbnutí s konfigurací jsem na to vykašlal. Prostě moc času na experiment ve slepé uličce.
Takže jestli je zájem, můžu zkusit během nějakého času začít testovat postupy co jsou v dokumentaci a balíčky a začít dávat dohromadu bugy na které narazím případně začít psát nějaké postupy a návody jak co a jak případně doplňovat komentáře tam kde by to bylo vhodné, pro přehlednost.

Btw. narazil jsem na dost divné chování balíčku Apitte, zkoušel jsem ho nainstalovat pomocí composeru a apitte/core nefungoval a podle všeho je dlouhodobě opuštěný.
Když se mrknu sem: https://contributte.org/…utte/apitte/ tak nastane přesně to co jsem psal, že dokumentace je rozstříštěná s verzemi.
Zatímco odkaz na balíček vede na apitte/core na Githubu je nový balíček: contributte/apitte o kterém se píše jen tam. Tady na fóru je všude ten nefunkční odkaz.
Nevím jak to udržovat konzistentní, jen to píšu. Protože když to sem napíšu, google si všumne a někdo další bude mít o asi 30 minut méně šedivých vlasů. :D

Editoval grovik (8. 4. 2:43)

d@rkWolf
Člen | 167
+
+2
-

Stará známá klasika, řešil jsem před 4 lety tady :-)) : https://forum.nette.org/…-konfigurace

Od té doby přibyly další skeletony, stále nacpané hromadou zbytečných komponent přetěžujících všechny části Nette. Každá z nich je poteciální problém s kompatibilitou, pokud to není něco, co nutně potřebuju. Chce to jeden skeleton úplně nejobyčejnější s úplně základní konfigurací, jen Nette + Nettrine, nic víc. Protože nainstalovat to do Nette web-projectu nebo sandboxu od nuly přes composer require ..xx.. prostě nejde. Nějak jsem to tehdy rozchodil, ale taky jen z některého z tehdejších skeletonů plus odebral to, co se mi odebrat podařilo aniž by se to zhroutilo.

Apitte bylo dřív taky rozdělené na několik kusů(taky zábava pokus rozchodit to), teď by to asi tímto: composer require contributte/apitte mělo jít přidat celé…možná…

HonzaN
Člen | 66
+
0
-

Proč to dělat složitě, když to jde snadno ? https://www.doctrine-project.org/…uration.html

grovik
Člen | 69
+
-4
-

Protože pokud nejsi člověk co to zná, tak čekáš, že nejlepší řešení pro tebe když používáš Nette je použít něco co patří k Nette. Před pár lety, mělo PHP dokumentaci co byla fakt chaos. To se změnilo a jsem rád, protože dost pomáhá tomu aby s tím někdo začal.
Já třeba teď řeším proč mi sakra datagrid nedá vybrat z bool přepínače. Sice ho vykreslí, ale není tam druhá možnost… zatím ještě bojuju protože nechci projekt rozdrbat změnou v datagridu… ale jestli se mi to nepodaří tak to udělám. Lepší dokumentace by tomu pomohla.
Občas mám pocit, že autoři dokumentaci píšou jenou proto aby si mohli tvářit jako mistři světa, vytvoříš něco pro Nette která má třeba 70% uživatelů v prostoru ČSR a dokumentaci napíšeš jen anglicky. Ok tak jsi hrdina a jako co? :D

Lumeriol
Generous Backer | 63
+
+4
-

grovik napsal(a):

Občas mám pocit, že autoři dokumentaci píšou jenou proto aby si mohli tvářit jako mistři světa, vytvoříš něco pro Nette která má třeba 70% uživatelů v prostoru ČSR a dokumentaci napíšeš jen anglicky. Ok tak jsi hrdina a jako co? :D

Je to celkem nefér od tebe tohle tvrzení. Spousta doplňků a rozšíření je třeba jen nadstavba nad doplňky jiných jazyků (typicky Symfony) a tam ti nikdo dokumentaci do češtiny překládat nebude. Nehledě na to, že pokud už používáš něco takového a ne jen základní Nette, očekává se určitá zkušenost a znalost technické angličtiny alespoň na úrovni čtení, překladačů máš dneska celou haldu. Navíc spousta kódu a API je poměrně dobře psaná tak, abys to pochopil, co to dělá ať už názvem metody, třídy nebo v PhpDocu. Tohle není Wordpress :)

A pokud ti něco nefunguje, pořád je tady dost míst (autoři/správci doplňků, forum, GitHub, Slack, Péhápkáři, …), kde se můžeš zeptat a někdo ti obvykle odpoví, abys tím nemusel trávit čas nebo se dozvěděl, proč tomu tak je.

P.S.: můžeš si přečíst i tohle

grovik
Člen | 69
+
-2
-

A jak to vysvětluje, že je v dokumentaci zmatek? Díky pěkně, právě jsem se dozvěděl, že autor něčeho, nemůže za blbou dokumentaci, ale že to je vlastně moje chyba. Ok.
Mohl by mi tedy autor dát k tomu přístup abych to mohl opravit? Asi nemohl. Ok.
Tak právě se tu zabetonovala slepá ulička. Rovnou můžeme říct, že používat doplňky od Conttribute a Ublablo, nebo jak si zrovna říkají, je špatně a pokud si k nim nenapíšeme vlastní dokumentaci, nejsme dost dobří na jejich použití.

A já jsem tu řešil jestli by jakože nebylo dobré tu dokumentaci přepsat a klidně bych to zkusil, ale zároveň bych čekal nějakou součinnost a to vyšumělo. Protože jestli mám strávit půl roku studováním gitHubu a kódu, abych k němu napsal dokumentaci, to se asi můžu věnovat radši tvorbě vlastního… čehokoliv.

PS: Hezký článek a co tím chtěl básník říci? Jakože moje chyba? Nebo, že to nemám řešit? Mám to nechat být? No, ale nechávat věci být, je přesně to co většinou věci zabije. Tak dlouho se to nechává hnít, až to skončí na kompostu. Možná bych měl napsat článek, který by obsahoval jednu větu: „Než něco komentujete, podívejte se co se řešilo v diskusi před tím, než se do někoho navezete.“

Pepino
Člen | 256
+
-1
-

@grovik kolik jsi autorům přispěl, že se tady rozhorčuješ nad špatnou dokumentaci? To že je něco open source neznamená, že je to zadarmo.

grovik
Člen | 69
+
0
-

@Pepino Slušně manipulativní technika.
Když jsi za něco neplatil, tak to nekritizuj. Když sám nic neuděláš, nemáš právo kritizovat. Lol. Natočil jsi někdy film? Ne? Tak nemáš právo si stěžovat, že tenhle není dost dobrý. Pokud nebudeš někoho kritizovat, tedy upozorňovat na chyby, věci se nikam nepohnou. Nečekal jsem, že je tu tolik sněhových vloček.

Já si ani nemyslím, že je něco zadarmo. Znovu si přečti celé vlákno. Nabízel jsem autorovi, že s dokumentací rád pomůžu, protože jsem sám narazil na to, kde jsou její limity. Mně by to pomohlo, a vzhledem k tomu, kolik je tu kolem toho debat, nejen mně.

Editoval grovik (11. 11. 3:08)

Infanticide0
Člen | 104
+
-1
-

Mile, neironicky, nápomocně a konstruktivně tě kritizuji za tvůj pravopis, který je na úrovni prvního stupně ZŠ.

Felix
Nette Core | 1196
+
+4
-

Ahoj, ja jsem autor tech balicku, skeletonu a ruznych projektu.

@grovik Kritiku akceptuju, jen nevim co s tim v tvem pripade delat. Porovnavat konfiguraci Doctrine vs Nettrine urcite muzeme, jen nevim do jake hloubky. Zkusis napsat seznam konfigurace co potrebujes v Doctrine udelat? S PHP ukazkami, at to pochopim. Ja bych doplnil jak to nakonfigurovat v Nettrine, co ty na to?

@darkWolf Tvuj komentar ke skeletonum taky akceptuju. Ale nechci je menit, tech lidi co to nevidi jako ty je radove vic, skeletony jim pomahaji a ja jsem za to rad. Abych ale dokazal, ze mi to neni uplne jedno, tak jsem udelal opravdu MVP projekt, kde je pouze Nette a pouze Nettrine. Doufam, ze to pomuze.

https://github.com/…rine-project

David Grudl
Nette Core | 8218
+
+1
-

Myslim, že u těch skeletonů hodně chybí nějaké průvodní slovo (cca 1000 až 2000 slov). Aby je člověk rozpletl, musel by už mít povědomí o těch knihovnách, takže začátečníkům moc nepomůžou.

Napsat návod srozumitelný i pro začátečníky je nejen časově náročné, ale hlavně to vyžaduje skill, který prostě nemá každý. Znám to velmi dobře – tak 75 % programátorů, kteří se pokusili přidat něco do dokumentace Nette, napsalo text, který se fakt nedal použít. Takže i když grovik nabízí, že by pomohl napsat dokumentaci, je spíš matematicky pravděpodobnější, že by tím jen přidělal dalším lidem práci bez přidané hodnoty. Ale muže byt užitečná jeho zpětná vazba, protože je v ni pohled začátečníka.

Proto je skvělé, že dnes se ta náročnost psaní řádově snížila, protože skvělé texty generuje AI.

grovik
Člen | 69
+
0
-

Já bych na to šel od lesa.

  1. Zkusme prostě tu věc vzít, nainstalovat Nette, k němu doinstalovat balíček a vzít to krok po kroku.
  2. Pokud má nějaký krok víc možností, dejme k tomu vysvětlení, proč zvolit jednu nebo druhou. Nakonec to nemusí být jen text, může to být i video, které lze snadno přepsat do textu (a já se vyhnu své dys a dys ;-)).
  3. Takový návod vzít a znovu to podle něj zkusit.

(při tom se najdou ty věci kde to drhne)

Uvědomuji si, jak je složité psát věci pro začátečníky (hodně velký kus života jsem pracoval jako ICT ve firmě, případně jsem dělal servisáka, kde 99 % zákazníků byli vedoucí školních jídelen).
Hlavní problém je, že postup prostě nefunguje, a člověk nad tím sedí a říká si, kde udělal chybu. Prochází to znovu a znovu. Po půl hodině v tom už nic nevidí, i kdyby se zbláznil.
Kdyby existoval postup s poznámkami typu „Pokud máte tuhle chybu, je to kvůli tomuhle,“ voila.
Ideálně by k tomu existoval seznam věcí, které je potřeba přidat do service.neon, local.neon atd. Proto říkám, že rád pomůžu – třeba tím, že to zkusím rozchodit na čisto a sepíšu, kde jsem se zasekl. Autor bude vědět lépe než já, proč se to stalo.
Mně to hrozně pomáhá. Před třemi lety jsem se na Nette nemohl ani podívat, dneska v tom dělám projekt velký jako stodola pro Můvmentariány. Živí mě to, a i když asi nemám sílu a čas něco programovat, potažmo se toho bojím, třeba jsem si teď napsal interní messenger pro uživatele. Možná by se to dalo vyseknout jako samostatný balíček, který by někdo mohl využít.
Kdby existoval postup a ten by měl napsáno pokud máte tuhle chybu, tak je to kvůli tomuhle. Voala.
Ideálně aby k tomu eixstoval seznam věcí co je potřeba přidat do service.neon, local.neon atd.
Proto říkám rád pomůžu, třeba tím, že to zkusím na čisto rozchodit a sepíšu kde jsem se seknul – autor bude vědět lépe než já proč se to stalo.
Mě to hrozně pomáhá třema rokama jsem neuměl na Nette ani koukat, dneska v tom dělám projekt velký jako stodola pro Můvmentariány. Živí mě to a asi nemám sílu a čas, třeba něco programovat potažmo asi se toho bojím (i když třeba jsem si teď napsal interní messenger pro uživatele a to by se možná dalo vyseknout jako samostatný balíček a někdo by to mohl využít).

@Felix To co psal David k těm skeletonům je recht. Já jsem zkoušel ten Apitte a prostě jsem to nerozchodil. Celé jsem to nainstaloval, chtěl jsem si to vyzkoušet a po spuštění jsem byl v červeném a když jsem se prokousal někam dál nechal jsem na tom třeba 3 hodiny a výsledek nijaký. Přitom to určitě musí nějak fungovat jinak by to nevzniklo (tajně si při pláči do kapesníku říkám :D ).

Editoval grovik (11. 11. 3:17)