Nastavení výchozích hodnot formuláře ve validátoru

totrna
Člen | 3
+
0
-

Dobrý den,

snažím se s validováním formuláře nastavit výchozí hodnoty formu, ale nevím jak na to.
Děkuji za radu.

protected function createComponentMyForm(): Form
{
    $form = new Form;
    $form->addText('name', 'Název')
         ->setRequired();
    $form->addSubmit('send', 'Uložit');
    $form->onValidate[] = [$this, 'validateMyForm'];
    $form->onSuccess[]  = [$this, 'saveMyForm'];
    return $form;
}

public function validateMyForm(Form $form): void
{
    $values = $form->getValues();
    // Validation ...
    $form['name']->addError("Název \"".$values->name."\" již existuje");
    $form->setDefaults(['name'=>'DEFAULT']);
}
lookass
Člen | 54
+
0
-

Ahoj, já výchozí hodnoty pro form nastavuji v metodě render.

<?php
public function render(): void
{
    $this['myForm']->setDefaults($this->filter);
}
?>
totrna
Člen | 3
+
0
-

To platí pro neodeslaný form. Já potřebuji form zvalidovat. Pokud není form validní, tak mi vrátí form se vším s čím jsem ho odesílal. Já bych ale potřeboval měnit data ve formu na základě výsledků validace. Třeba jen vyprázdnit textové políčko.

Editoval totrna (20. 7. 2020 9:10)

David Matějka
Moderator | 6445
+
+1
-

pouzij setValue na konkretnim prvku, resp. setValues na containeru (a formu)

totrna
Člen | 3
+
0
-

Děkuji Davide