tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Generování formulářů pro entity

před 5 lety

greeny
Člen | 406

Zdravím, začal jsem si trochu hrát s generováním formulářů pro entity.

Byl to jen takový nápad, ale zajímalo by mě, jak / jestli by se to dalo vylepšit, uvítám jakékoliv návrhy, připomínky…

https://github.com/…Generate.php

Použití:

$form = Generate::from($entity);
$form = Generate::from($entity, $formClass);
$form = Generate::from($entity, new CustomForm);

Vygeneruje formulář pro danou entitu, druhý parametr umožní nastavit formulářovou třídu nebo předat přímo Form.

před 5 lety

castamir
Člen | 631

Upřímně nevím, jestli je to k něčemu dobré… u stringových bez nějaké další nápovědy nikdy nebudeš vědět, zda máš použít input nebo textarea nebo obecně hidden… ne všechny properties jsou navíc určeny k formulážové editaci (přinejmenším ty property-read určit editovat nebudeš). A to nemluvím o validacích a hláškách.

Tady by spíš byl vhdný generátor pro konkrétní IDE, který ti ten formulář nachystá a ty ho podle svého jen upravíš…

před 5 lety

greeny
Člen | 406

@castamir formulář ti to jen vrátí, ty ho můžeš jednoduše upravit. Read-only property jsou vyloučeny (https://github.com/…Generate.php#L30). Já například tento kód použil v administraci u jednoho projektu na 90% místech a ušetřil jsem asi 100 řádek manuálního vypisování kódu (hlášky mě stačily defaultní).

Ale díky za názor, chápu, že to pro některé projekty není vhodné.

před 5 lety

castamir
Člen | 631

zkus tam přidat whitelist, který upřesní, které properties se mají použít. Jak řešit textarea ale pořád nevím…

před 5 lety

Michal III
Člen | 84

Textarea by se dala vyřešit pomocí nějakého custom flagu… Třeba by to mohlo mít flag m:size(xx), který by zároveň určoval maximální velikost řetězce v db (stejný flag se právě objevuje v generátoru db schéma, který se zde již také objevil). Pokud by flag byl nastaven, může se ve formuláři zároveň nastavit maximální délka, pokud ne → použít textareu.