Generovanie formularov z DB

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

Existuje nieco, na generovanie formularov z DB? Dost ma to nebavi…stale dookola sa hrat s roznymi formami…

matopeto
Člen | 395
+
0
-

Myslis nejaky datagrid? kde je formular plus minus rovnaky ako tabulka? Pripadne nieco viac custom ale univerzalne si isto napises za pol dna ako cvicenie :)

cujan
Člen | 410
+
0
-

nie, tak napriklad nam v db tabulku osoba, ktora ma urcite atributy a potrebujem nato vytvorit form…

CZechBoY
Člen | 3608
+
+1
-

@cujan a jak by ten generátor měl vědět co za políčka tam má dát a co vše má jít editovat, jaký vazby atd? Pro jednoduchou editaci databázi můžeš použít Adminer Editor.

Pavel Kravčík
Člen | 1180
+
+7
-

V nové verzi umí také generovat kód pro formuláře. Ale jen část v createComponent bez validátorů.

http://imgur.com/a/wr54L

Šaman
Člen | 2634
+
0
-

CZechBoY napsal(a):

@cujan a jak by ten generátor měl vědět co za políčka tam má dát a co vše má jít editovat, jaký vazby atd? Pro jednoduchou editaci databázi můžeš použít Adminer Editor.

Políčka tam má dát pro každý sloupec jedno. Typ taky zjistí z db. Výsledkem je hrubá kostra, ale když entita obsahuje velké množství statických údajů, tak to ušetří práci.

Pokud vím, tak takový jednoduchý generátor je v Doctrine a jde použít i pro některé podobné ORMy.
(Aha, tam to ale nedělá z databáze, ale z definicce entity. A jiný genrátor naopak umí vygenerovat SQL schema pro tu entitu.)

Editoval Šaman (11. 4. 2017 13:28)

Ravenss
Člen | 12
+
0
-

Pavel Kravčík napsal(a):

V nové verzi umí také generovat kód pro formuláře. Ale jen část v createComponent bez validátorů.

http://imgur.com/a/wr54L

Zkoušel jsem nainstalovat verzi 4.3.0 a nenašel to tam, mohl bych poprosit o link?

EDIT: Už to vidím, dg/adminer-custom je ten správný adminer s nette forms exportem

Editoval Ravenss (11. 4. 2017 13:38)

Šaman
Člen | 2634
+
0
-

Nestahuj adminer, ale nainstaluj si composerem ten od Davida:
composer create-project dg/adminer-custom.

Edit: Aha, už jsi to našel :)

Editoval Šaman (11. 4. 2017 14:44)

cujan
Člen | 410
+
0
-

Šaman napsal(a):

CZechBoY napsal(a):

@cujan a jak by ten generátor měl vědět co za políčka tam má dát a co vše má jít editovat, jaký vazby atd? Pro jednoduchou editaci databázi můžeš použít Adminer Editor.

Políčka tam má dát pro každý sloupec jedno. Typ taky zjistí z db. Výsledkem je hrubá kostra, ale když entita obsahuje velké množství statických údajů, tak to ušetří práci.

Pokud vím, tak takový jednoduchý generátor je v Doctrine a jde použít i pro některé podobné ORMy.
(Aha, tam to ale nedělá z databáze, ale z definicce entity. A jiný genrátor naopak umí vygenerovat SQL schema pro tu entitu.)

a oplati sa aj namale projekty pustat do doctrine?

Svaťa Šimara
Člen | 98
+
-4
-

@cujan Velikost projektu nezávisí na použití Doctrine.

Píšeš tady, že v podstatě potřebuješ dostávat data z formulářů do databáze. Tento jednoduchý proces Ti Doctrine neskutečně zkomplikuje.
Pokud máš model v databázi a postup: formulář → databáze, databáze → vypsat data; rozhodně Doctrine nedoporučuju :-)

Pavel Kravčík
Člen | 1180
+
0
-

Jako vždy doporučím YetORM s Ublaboo. Trochu jsme si přiohnuli řešení a vytvořit CRUD s gridem, který ukládá do DB je otázka hodinky a ještě to hezky vypadá. :) A mohlo by to být rychlejší nebýt manuálního renderování formulářů.

Ale v podstatě je to použitelné jen u nás. Ten čas, který jsme do toho investovali, abychom nějaký v budoucnu ušetřili (intranet je plný tabulek a formulářů) se nám však několikanásobně vrací.

Pointa byla, že i na malé řešení se může použít třeba Doctrina, pokud to máš pěkně připravené a rozumíš tomu. V bývalé firmě se dokonce administrace generovala dle zadaných entit v yaml. Ale to si pamatuji jen matně, jak to bylo. Už to nějaký pátek bude.

Editoval Pavel Kravčík (12. 4. 2017 12:41)

akadlec
Člen | 1326
+
+1
-

@SvaťaŠimara a důvod? Já to takto na projektu mám a že by mě to dělalo nějaké komplikace se říci nedá. Nemám tedy automatické generování formu z entity, ale nemám problém vzít $form->getValues() a předat jej takto surové CRUDu a ten to nalije do DB

Svaťa Šimara
Člen | 98
+
-2
-

@akadlec Začnu obšírněji.

Popišme si situaci, kterou je potřeba řešit: model v databázi a postup: formulář → databáze, databáze → vypsat data.
Pokud je situace jiná, bude jiná i odpověď.

Doctrine se skládá z kotel částí, to jsem si neuvědomil.

Pro tento typ problému můžu použít vícero databázových vrstev, jednou z nich je Doctrine DBAL. Proč ne. Pokud není moc složitá na použití, moc pomalá, a je to infrastruktura, kterou v projektu snesu, ok, použijme Doctrine DBAL.

Můj původní příspěvek narážel na použití Doctrine ORM, to jsem nezmínil. Pro tento typ problému je ORM naprosto zbytečná komplikace. Model máme v databázi, ale abychom mohli použít objektově-relační mapování, musíme mít druhý model – objektový. Takže jsme si zcela uměle přidali další reprezentaci modelu.
Další problém je údržba – o objektový model se budeme muset starat.
Další problém je výkon – je mapování objektů na relace jednoduchý problém? Nikoliv, takže nás bude ORM krásně brzdit.
Benefit ORM? Žádný. Protože nemodelujeme objektově, ale relačně.

David Matějka
Moderator | 6445
+
0
-

@SvaťaŠimara

Benefit ORM? Žádný.

i pokud pouzivam entity jen jako prepravky na data (anemicky model), tak je tam jedna nesporna vyhoda – staticka analyza

JR
Člen | 5
+
0
-

Je úplně zbytečné komplikovat situaci s doctrinou pokud se jedná jen o přelití dat z DB do šablony :D navíc nevidím výhodu v problematice, kterou tohle téma začlo … asi jako jít s dělem na komára. Problém je asi jen v tom dokola psát komponenty pro formy … nicméně řešit v tom ještě přehazování dat přes doctrinu mi přijde úplně zbytečné.

Svaťa Šimara
Člen | 98
+
0
-

@DavidMatějka Přepravky na data můžou zůstat přepravkami, a nemusíme mluvit o modelu a ORM.

Z formuláře do přepravky, která je dělaná přesně pro přepravu do databáze – bude mít metodu např. toDatabaseArray().

Máme statickou analýzu a nemáme ORM.

David Matějka
Moderator | 6445
+
+3
-

@SvaťaŠimara takze misto toho, abych pouzil ORM, ktery se mi postara o mapovani, relace atd., tak budu delat vlastni „orm“?

Svaťa Šimara
Člen | 98
+
0
-

@DavidMatějka Nee, nee, neee :-D Nemluvím tady o univerzálním řešení, mluvím o řešení daného problému:

model v databázi a postup: formulář → databáze, databáze → vypsat data.

Tvůj argument – statickou analýzu – jsme vyřešili přepravkama. Takže ano, stojím si za tím, že v tomto daném případě není použití ORM na místě.

Pavel Kravčík
Člen | 1180
+
0
-

Začněte psát blog Sváťo. Doména je koukám volná. https://hosting.wedos.com/…n-check.html?…

Svaťa Šimara
Člen | 98
+
0
-

@PavelKravčík Výborný nápad. Ale témat na blog moc nebude, spíš to bude single page https://cdn.meme.am/…64701411.jpg

akadlec
Člen | 1326
+
0
-

Mno nevím, form nemám vždy jen o jedné tabulce ale i o X závislých joinech, doctrine za mě tyto joiny vyřeší, dostanu z něj zpět objekt který potřebuji včetně všech „form kontejnerů“ a pak jednoduše mapperem si form naplním. Negeneruju form automaticky na základě struktury dat, protože občas po něm chci specifické věci a těch pár řádek definic mě nezabije. Nicméně přelití dat z DB před Doctrine do formu a z5 a pak z DB přes Doctrine do gridu je poměrně jednoduché. Navíc díky tomu že entity mají nějakou definovanou formu, tak nemusím mít zdroj dat DB ale klidně filesystém a grid nepozná co jsem mu předal.