Form::isSubmitted a Form::setDefaults

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

Zatiaľ som sa s použitím metódy Form::setDefaults() stretol výlučne v prípade nastavovania počiatočných hodnôt formulára: buď ako východzie, alebo – pri editačnom formulári – nastavené podľa nejakých dát z modelu. Takže kedykoľvek som ju použil, obaľoval som ju podmienkou !Form::isSubmitted():

// v továrničke
$form = new AppForm;
...
$form->addSubmit(...)
    ->onCheck[] = ...;

if (!$form->isSubmitted()) {
    $form->setDefaults(array(
        ...
    ));
}

Má táto metóda i iné využitie – v prípade odoslaného formulára? (okrem zrejmého, že premaže poslané dáta). Mojim cieľom je zbaviť sa opakujúcej podmienky.


S názvom funkcie mi správanie v tomto prípade – premazanie odoslaných dát – príde ako protichodné. Logickejšie sa mi pre tento prípad vidí napríklad názov setValues(). Pričom setDefaults() by som implementoval ako:

public function setDefaults($array) {
    if (!$this->isSubmitted()) {
        $this->setValues($array);
    }
}

Čo myslíte?

Editoval kravco (9. 4. 2009 0:39)

David Grudl
Nette Core | 8218
+
0
-

Zrovna včera jsem nad tím přemýšlel :-) Váhal jsem, jestli taková změna bude nebo nebude zpětně kompatibilní, ale v podstatě by měla být.

David Grudl
Nette Core | 8218
+
0
-

Dal jsem to tam.

kravčo
Člen | 721
+
0
-

Ak sa nemýlim, pribudne len test na !$form->isSubmitted() navyše. Tým, ktorí používali setDefaults() štandardne (obalené v podmienke) sa logika nezmení – iba sa podmienka aplikuje dvakrát. Tým, ktorí si prepisovali hodnoty, to možno začne v novej verzii fungovať :)

kravčo
Člen | 721
+
0
-

David Grudl napsal(a):

Dal jsem to tam.

Bod pre Nette, feature request vybavený 1h17m po tom, čo sa objavil na fóre :)