Nette Forms generator – Generování formulářů ze struktury databáze

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

Ahoj,
přes noc jsem vytvořil takovou menší utilitu na generování kostry formulářů z databázové struktury tabulky.

Samozřejmě budu rád i za jakékoli reakce zde na fóru.

Zatím v první beta verzi.

Editoval nanuqcz (3. 6. 2016 3:10)

Oli
Člen | 1215
+
0
-

Hází ti to 403.

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

Generuje mi to v labelu:

▓▓▓

A $this->getParam() je myslím deprecated.

nanuqcz
Člen | 822
+
0
-

Hází ti to 403.

Díky za upozornění, už by mělo jet.

Generuje mi to v labelu:

▓▓▓

To je schválně. Ten nástroj nemůže vygenerovat úplně vše. Znakem ▓▓▓ jsou označeny místa, která si musí programátor dopsat, protože např. záleží na jazyku webu, apod. V základu jde jen o chybové hlášky a flash messages.

EDIT: getParam() změněn na getParameter()

Editoval nanuqcz (3. 6. 2016 8:40)

Ot@s
Backer | 476
+
0
-

Hezká pomůcka. K dokonalosti mi chybí v saveRequestForm konstukce try {} catch () {}.

nanuqcz
Člen | 822
+
0
-

@Ot@s Nějak takhle to myslíš?

	public function saveFooForm(Form $form)
	{
		$values = $form->values;

		try {
			// Save
			if ($id = $this->getParameter('id')) {
				// Update
				$this->fooRepository->update($id, $values);
			} else {
				// Create
				$this->fooRepository->create($values);
			}

			$this->flashMessage('▓▓▓', 'success');
			$this->redirect('default');

		} catch (\Exception $e) {
			$this->flashMessage('▓▓▓', 'danger');
			Tracy\Debugger::log($e, Tracy\Ilogger::EXCEPTION);
		}
	}

Trochu mi přijde, že každý si tohle řeší jinak. Někdo vyhazuje takové vyjímky, někdo jiné, v jiných případech, někdo radši vrací z repository TRUE/FALSE. Koukal jsem i do oficiálních Nette examples, jak se řeší ukládání formuláře tam, a vyjímky tam zpracovávané nejsou nijak.

Už se někde na fóru řešila best-practise ukládání formulářů do DB, co se týče vyjímek apod.?

Editoval nanuqcz (3. 6. 2016 11:27)

Felix
Nette Core | 1196
+
0
-

@nanuqcz Sakra, mrzi me, ze jsi to publikoval driv nez ja. Super napad i prace. :-)


Rad bych pridal na componette podobne nastroje. Myslis, ze by jsi byl pro?

Editoval Felix (3. 6. 2016 12:12)

nanuqcz
Člen | 822
+
0
-

@Felix Díky, to jsem rád :-P

Rad bych pridal na componette podobne nastroje. Myslis, ze by jsi byl pro?

Myslíš jako nějak takhle? http://i7.5cm.ru/i/jAtQ.png To bych určitě pro byl. Pokud to myslíš jen jako přidat do „Add-ons“ sekce, tak tam to podle mě nepatří.

Ale kdyby se chtělo někomu s něčím úplně moc pohrát, tak v Nette podle mě chybí konzolové nástroje (třeba i na generování formulářů), jako má např. Symfony. Tenhle můj online nástroj je jen taková berlička, protože udělat to ideálně jsem neměl čas :-)

Editoval nanuqcz (3. 6. 2016 13:14)

Felix
Nette Core | 1196
+
0
-

nanuqcz napsal(a):

@Felix Díky, to jsem rád :-P

Rad bych pridal na componette podobne nastroje. Myslis, ze by jsi byl pro?

Myslíš jako nějak takhle? http://i7.5cm.ru/i/jAtQ.png To bych určitě pro byl. Pokud to myslíš jen jako přidat do „Add-ons“ sekce, tak tam to podle mě nepatří.

Ale kdyby se chtělo někomu s něčím úplně moc pohrát, tak v Nette podle mě chybí konzolové nástroje (třeba i na generování formulářů), jako má např. Symfony. Tenhle můj online nástroj je jen taková berlička, protože udělat to ideálně jsem neměl čas :-)

Nene, myslel jsem neco jako samostatny projekt na https://tools.componette.org/form-generator. Nebo tak nejak.

nanuqcz
Člen | 822
+
+2
-

Aha, podobných nástrojů by mohlo časem vzniknout víc. Takže můj názor obecně:

Podle mě by bylo lepší umístit (někam, třeba na componette) jen odkaz na takový nástroj, a to z několika důvodů:

  1. Bude snažší pro všechny lidi takový nástroj vytvořit. Na vlastním serveru, s externími knihovnami, které jim vyhovují, atd.
  2. Bude snažší takový nástroj udržovat. Autor nemusí posílat žádné pull-requesty do repozitáře „componette/tools“, starat se o kompatibilitu s verzí Nette, která zrovna componette.org pohání atd.
  3. Autor tím získá lepší prezentaci toho, že nástroj udělal on. Což je jediná odměna, kterou za svoji práci na nástroji zdarma dostane :-)

Pokud chceš udělat fork nanuqcz/NetteForms a integrovat to přímo do componette, můj souhlas máš, vydal jsem to přecijen jako svobodný open-source. Ale nemyslím si, že by to mělo mít nějaký přínos.

Editoval nanuqcz (3. 6. 2016 17:36)

ic
Člen | 430
+
0
-

Ještě k tomu vymyslet nějaký druh formulářových anotací v komentářích tabulek a bude to hit :D .
Třeba něco jako /** @email */ Emailová adresa což by se bralo jako Form::EMAIL, to by byla zajímavá věc.

nanuqcz
Člen | 822
+
0
-

/** @email */

To jsem v životě neviděl, k čemu to je dobré?

EDIT: Už asi chápu. Aktuálně se to bere z názvu sloupečku:

  • *_id: addSelect() na cizí tabulku
  • *_path: addUpload()
  • *mail: addText()->setType(‚email‘)

Editoval nanuqcz (9. 6. 2016 17:49)

ic
Člen | 430
+
0
-

nanuqcz napsal(a):

… Aktuálně se to bere z názvu sloupečku:

  • *_id: addSelect() na cizí tabulku
  • *_path: addUpload()
  • *mail: addText()->setType(‚email‘)

Také pěkné řešení, ale email je jen takový nejokatější případ, napojit takhle všechny nové tipy inputů ( http://html5doctor.com/…input-types/#… ) by mohlo být riskantní, že se třeba někde střelí number (jinak velmi užitečné) kam nepatří a další podobné.