addConditon pridani validace

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

Ahoj neporadili by jste mi jak pridat validaci na addCondition jedna se o prvek chceckbox. Pokud je zaskrtnuty tak se zobrzi buton na nahrani souboru ale potrebuji tam jeste pridat kontrolu pokud neni vybrany soubor tak „Vyberte prosim soubor“ a pokud je tak nic a odesle se to. U normalniho uploadu je to v pohode ale tady nevim.
mam to takhle

$this->addCheckbox('oldCmdb', 'neco')
               //->setRequired('Zvolte prosim soubor')
               ->addCondition($this::EQUAL, TRUE)
               ->toggle('oldData');

Dekuji moc za radu

David Matějka
Moderator | 6445
+
0
-

tu kontrolu dej na ten upload v kombinaci s addConditionOn

->addUpload(...)
->addConditionOn($this['oldCmdb'], $this::EQUAL, TRUE)
->setRequired('...')
parti
Člen | 117
+
0
-

promin a do toho addUpload prijde co ?

pred tim mam klasicky addUpload a mam ho takhle a je to ok

$this->addUpload('csv')
                ->addRule($this::REQUIRED, 'You have to choose the file')
                ->addRule($this::MAX_FILE_SIZE, 'Uploaded file is too big, limit is 3 MB', 3 * 1024 * 1024);

ale u toho druheho nevim.
Jinak mi to vypise
Call to undefined method Nette\Forms\Controls\Checkbox::addUpload().

Editoval parti (13. 3. 2017 18:05)

David Matějka
Moderator | 6445
+
0
-

tak predpokladam, ze

Pokud je zaskrtnuty tak se zobrzi buton na nahrani souboru

je nejaky upload control, ktery si vytvoril, ne?

parti
Člen | 117
+
0
-

Pokud je zaskrtnuty buton zobrazi se v sablone input na nahrani souboru.A pokud neni tak nic.
Pravdepodobne nemam vytvoreny upload control. A nejako nevim jak ho vytvorit.

Editoval parti (13. 3. 2017 18:09)

David Matějka
Moderator | 6445
+
0
-

no a ten button si vytvoril pres addUpload, ne?

parti
Člen | 117
+
0
-

ne vytvoril jsem ho cez input

<div id="oldCompareData">
            <div class="col-md-6">
                <div class="well-import">
                    <strong>Import</strong>
                </div>
            </div>
            <div class="col-lg-12">
                <div class="col-lg-6">
                    <div class="well-import" >
                        <input type="file" name="soubor">
                    </div>
                </div>
            </div>
        </div>\--

a pak mam ve fromulari ten checkbox takto
$this->addCheckbox('oldCmdb', 'neco')
               ->addUpload()
               ->addConditionOn($this['oldCmdb'], $this::EQUAL, TRUE)
               ->setRequired('Vyplnte')
               ->toggle('oldCompareData');

nic vic k tomu nemam.

Editoval parti (13. 3. 2017 18:12)

David Matějka
Moderator | 6445
+
0
-

vytvor pro to samostatny upload control pres addUpload

parti
Člen | 117
+
0
-

ok promin a ten se dela jak ? bohuzel to resim poprve.

David Matějka
Moderator | 6445
+
0
-

stejne, jako si pridal ten csv :)

parti
Člen | 117
+
0
-

nerozumim csv jsem pridal klasicky $this->addUpload(‚csv‘)

ale tohle pokud udelam takhle ->addUpload(uploadControl) tak to asi neni spravne ?

David Matějka
Moderator | 6445
+
+1
-
$this->addUpload('soubor')
->addConditionOn($this['oldCmdb'], $this::EQUAL, TRUE)
->setRequired('...')

a v sablone namisto <input type="file" name="soubor"> budes mit {input soubor}

parti
Člen | 117
+
0
-

v ty sablone mi to nechce vzit vypisuje mi to chybu

Undefined variable: _form
David Matějka
Moderator | 6445
+
0
-

asi to nemas ve formulari

parti
Člen | 117
+
0
-

hm nemam mam tam $this->addUpload

David Matějka
Moderator | 6445
+
0
-

myslim v te sablone to nemas pod {form nazev}

parti
Člen | 117
+
0
-

ale ja bych to potreboval mit na ten chceck box po zaskrtnuti se zobrazi a pokud ne tak tam neni videt.Ten addUpload mi to neudela, ten tam bude porad.
Jde to nejako udelat na ten chcekbox?
Dekuji moc za radu

David Matějka
Moderator | 6445
+
0
-

bud pouzij na cely formular manualni renderovani nebo muzes na tom uploadu nastavit id pres ->setOption('id', 'xxxxx')

parti
Člen | 117
+
0
-

Pridavam reseni a dekuji moc @DavidMatějka a za popis a @h4kuna za vysvetleni.
Dekuji

Zde vysledek

$checkbox = $this->addCheckbox('oldCmdb', 'blablabla');
       $checkbox->addCondition($this::EQUAL, TRUE)
               ->toggle('upload-file');

       $this->addUpload('soubor')
               ->setOption('id', 'upload-file')
               ->addConditionOn($checkbox, $this::EQUAL, TRUE)
               ->setRequired('You have to choose the file');

Editoval parti (14. 3. 2017 9:16)