defaultni prazdna hodnota pro odeslany formular

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

Zdravím,
napadla mě jedna featurka pro formuláře. Jednou to bylo probíráno zde, ovšem k vyřešení se nedošlo.

Bylo by skvělé, kdyby se dalo nastavit, jaká hodnota mi bude vrázena, pokud je textové políčko prázdné. Dále by bylo skvělé, aby šlo nastavit přetypování. Mohlo by se pak porovnávat pomocí tří rovnítek a programátor by nebyl zatížen převodem ('0' == '' => true).

Moje představa by byla asi nějak tak: ->addText('name', 'Label')->setType(Form::INTEGER, null), kde první parametr by byl, na co se má přetypovat a druhý by byl, jaká je výchozí hodnota, pokud uživatel políčko nevyplnil. Pořadí parametrů by klidně mohlo být naopak nebo pro každou věc zvlášť metoda (tudíž dvě metody).

Možná je to hloupost, ale myslím si, že by to zpřehlednilo kód a vyřešilo to spoustu nezáživné a opakující se práce s přetypováváním. Dle mě to není složité do formulářů přidat. Pokud by se to odsouhlasilo, klidně bych to dopsal.

Když už mluvím o přetypování, nebylo na škodu umět i get parametrům říct, jaký typ vyžaduji.

Vezmeme-li metodu getParam('number', null), bylo by velmi jednoduché doplnit o 3. parametr getParam('number', null, self::INTEGER). Pak vím jistě, že dostanu null nebo int. Pokud bych chtěl docílit stejného efektu teď, muzel bych napsat.

$num = $this->getParam('number');

if ($num !== null) {
   $num = (int) $num;
}

Opět mi příjde zápis se třemi parametry kratší a přehlednější. Samozřejmě, tohle nastane, jen pokud výchozí hodnotu beru null, kdybych ji bral jako číslo 0, stačilo by napsat $num = (int) $this->getParam('number', 0).

Zápis jaký typ vyžaduji by klidně mohl být 'int', self::INTEGER, self::INT, HttpRequest::INT, nevím co by bylo nejlepší…

Co myslíte?