Nastavení typů políček formuláře

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

Zdravím,

dumal jsem nad tím, jak je řešeno rozpoznávání typů políček formuláře, rozpoznávají se dle přidané validace. Nebylo by dobré formuláři nastavit metodu, která by zpracovala typy inputů dle „show columns from …“ ? CO se tyýče formuláře, tak si myslím, že ten dotaz navíc by byl ku prospěchu… Mohl by se kontrolovat typ, ale zároveň třeba velikost varcharu v databázi a tím by se tam přidala automatická pravidla na délku nebo velikost integeru… Tím by odpadlo riziko že se nechtěně ořízne řetězec. Nastavovat sql_mode na něco jako STRICT_ALL_TABLES taky není moc přívětivé atd…

Tomáš Votruba
Moderator | 1114
+
0
-

@Ascaria: Ahoj, taková myšlenka je zajímavá a do jisté míry praktická. Jen se obávám, že by to aplikaci výkonostně velmi ovlivnilo, kdyby se při každé upsert operaci muselo provádět:

  • vytáhnou pole z tabulky
  • zjistit odpovídající typy jednotlivým sloupcům
  • stanovit kritéria pro jednotlivé sloupce (např. varchar(120) pro nazev)
  • detektovat sloupce, které nevyhovují a nastavit jim větší datové typy

Je to optimalizace, která zní dosti náročně, nejen vlastním algoritmem. Pokud tě to opravdu láká, zkus jednoduché řešení pro 1. sloupec (name varchar(40)), aplikovat požadovanou logiku a přednést výsledky měření – jaké případy jak dlouho trvají, resp. jakou časovou zátěž tento skript přináší.

Pokud bys těmto chybám (oříznutí dlouhého textu kvůli malému rozsahu sloupce) chtěl zabránit, můžeš jednoduše nastavit omezení délky obsahu přímo na input/textarea. To mi přijde správné :) jinak ti totiž celou aplikaci může sabotovat někdo, kdo do sloupce s char(40) narve 3000 znaků apod…

Případně řekni, z jaké příčiny chceš toto řešit.

Filip Procházka
Moderator | 4668
+
0
-

Mě, jako člověku, který používá primárně Doctrine, by hodně vadilo, kdyby něco takového bylo ve formulářích jako výchozí.

Editoval HosipLan (27. 3. 2012 22:55)

Ascaria
Člen | 187
+
0
-

@Schmutzka: Jen mě to napadlo a tak to házím od éteru. Asi aby byly formuláře eventuelně ještě o něco chytřejší a programátor neměl v definici formu tuny addRule, které ošetří „rozměry“ formu pro řádek v databázi, které často ani nepřidá (bohužel můj případ). Navíc by to třeba šlo i ruku v ruce s Nette stylem „write less, do more“.

@HosipLan: Samozřejmě to výchozí být nemůže kvůli zpětné kompatibilitě, ale mělo by to jít jednoduše zapnout… A jak v Doctrine řešíš, když se ti do insertu dostane delší text, než je pro něj prostor ve sloupečku v db?

Editoval Ascaria (28. 3. 2012 10:38)