Formulář – nastavení defaultní hodnoty prvku při zaškrnutém checkboxu

Allconius
Člen | 313
+
0
-

Ahoj, mám tento formulář:

<?php
        $form->addCheckbox('db', ' Přístup k informačním databázím')
            ->setDefaultValue(0)
            ->addCondition($form::EQUAL, true)
            ->toggle('db-group')
            ->toggle('db-opravneni')
            ->toggle('db-aplikace')
            ->toggle('db-ou')
            ->toggle('db-oduvodneni');

        $form->addGroup('Přístup k informačním databázím')
            ->setOption('id', 'db-group')
            ->setOption('description', '');

        $opravneni1varianta = array(1 => ' zřízení',2 => ' změnu',3 => ' zrušení / přístupu k informačním databázím');

        $form->addRadioList("opravneni1",'Žádám o ',$opravneni1varianta)

            ->setOption('id', 'db-opravneni')
            ->getSeparatorPrototype()->setName(null)
            ->addConditionOn($form['db'], Form::FILLED)
            ->setDefaultValue(1);
?>

a potřeboval bych nějak upravit to

<?php
->addConditionOn($form['db'], Form::FILLED)
?>

aby když se zaškrtne ten checkbox tak aby se u radiolistu nastavila hodnota setDefaultValue(1) a když se to odšrtne aby tam nebylo nic. Zkoušel jsem i:

<?php
->addConditionOn($form['db'], Form::EQUAL, TRUE)
?>

ale píše to:
Object of class Nette\Forms\Controls\Checkbox could not be converted to string

Editoval Allconius (26. 7. 2019 14:00)

David Matějka
Moderator | 6445
+
0
-
  1. ta soucasna chyba se ti zobrazuje z duvodu, ze addConditionOn volas na Html objektu vracenem z getSeparatorPrototype
  2. podminene nastaveni default hodnoty nejde (jedine pres vlastni js)
  3. a potrebujes to vubec? jestli to dobre chapu, tak je ten radiolist stejne skryty, pokud neni checkbox zaskrtnuty
Allconius
Člen | 313
+
0
-

David Matějka napsal(a):

  1. ta soucasna chyba se ti zobrazuje z duvodu, ze addConditionOn volas na Html objektu vracenem z getSeparatorPrototype
  2. podminene nastaveni default hodnoty nejde (jedine pres vlastni js)
  3. a potrebujes to vubec? jestli to dobre chapu, tak je ten radiolist stejne skryty, pokud neni checkbox zaskrtnuty

Ahoj, díky, máš pravdu. Ten RadioList je skrytý, ale na tu položku „opravneni1“ se váže podmínka, ale vyřešil jsem to nakonec úpravou té podmínky:

<?php
if ((($values->opravneni1)==1)and(($values->db)==1)) ....
?>

a to addConditionOn jsem alespoň využil na seznam aplikací:

<?php
        $options1 = $this->db2Manager->seznamAplikace();

        $form->addMultiSelect('dbaplikace', 'Aplikace/ Agenda:', $options1, 30)
            ->setOption('id', 'db-aplikace')
            ->setOption('description','Pro výběr více aplikací/agend stiskněte klávesu Ctrl')
            ->addConditionOn($form['db'], Form::EQUAL, TRUE)
                ->setRequired('Není vybrána žádná aplikace nebo agenda.');
?>