addConditionOn nad checkboxem
- Allconius
- Člen | 317
Ahoj, mám checkbox:
<?php
$form->addCheckbox('db', ' Přístup k informačním databázím')
->setDefaultValue(0)
->addCondition($form::EQUAL, true)
->toggle('db-group')
.....
?>
a u něj addCondition, to je ok, ale když chci přidat u radiobutonu addConditionOn na stejný prvek:
<?php
$form->addRadioList("ou",'',$ouvarianta)
->setOption('id', 'db-ou')
->getSeparatorPrototype()->setName('');
->addConditionOn($form['db'],Form::EQUAL, true)
->setRequired('Přístup k osobním údajům je potřeba vyplnit.');
?>
tak mi to vyhodí error:
Error
Object of class Nette\Forms\Controls\Checkbox could not be converted
to string
Jak mám nastavit addConditionOn že je ‚db‘ zaškrtnutý ?
- David Matějka
- Moderator | 6445
ten zápis mi připadá v pořádku. můžeš poslat celou tracy, kde bude vidět call stack?
- Allconius
- Člen | 317
Error
Object of class Nette\Forms\Controls\Checkbox could not be converted to
string search►
…/vendor/nette/utils/src/Utils/Html.php:507
Nette\Utils\Html->appendAttribute()
…/app/Presenters/HomepagePresenter.php:298 Nette\Utils\Html->__call()
288: ->setOption(‚id‘, ‚db-aplikace‘)
289: ->setOption(‚description‘,‚Pro výběr více aplikací/agend
stiskněte klávesu Ctrl‘)
290: ->addConditionOn($form[‚db‘], Form::EQUAL, TRUE)
291: ->setRequired(‚Není vybrána žádná aplikace nebo agenda.‘);
292:
293: $ouvarianta = array(‚Žádám o přístup k osobním údajům‘=>'
Žádám ‚,'Nežádám o přístup k osobním údajům‘=>' nežádám
o přístup k osobním údajům');
294:
295: $form->addRadioList(„ou“,'',$ouvarianta)
296: ->setOption(‚id‘, ‚db-ou‘)
297: ->getSeparatorPrototype()->setName('')
298: ->addConditionOn($form[‚db‘],Form::EQUAL, true)
299: ->setRequired(‚Přístup k osobním údajům je potřeba
vyplnit.‘);
300:
301: $form->addTextArea(‚dboduvodneni‘, ‚Odůvodnění
žádosti:‘)
302: ->setOption(‚description‘, '')
…/src/ComponentModel/Container.php:159
App\Presenters\HomepagePresenter->createComponentOmiForm()
…/src/ComponentModel/Container.php:122 Nette\ComponentModel\Container->createComponent()
/data/docs/www/html/omi/formular/temp/cache/latte/templates-Homepage-default.latte–abae036d97.php:45 Nette\ComponentModel\Container->getComponent()
…/latte/src/Latte/Runtime/Template.php:273 Templateabae036d97->blockContent()
/data/docs/www/html/omi/formular/temp/cache/latte/Presenters-templates-@layout.latte--a82a4e3146.php:185 Latte\Runtime\Template->renderBlock()
…/latte/src/Latte/Runtime/Template.php:186 Templatea82a4e3146->main()
…/latte/src/Latte/Runtime/Template.php:162 Latte\Runtime\Template->render()
…/vendor/latte/latte/src/Latte/Engine.php:87 Latte\Runtime\Template->render()
…/Bridges/ApplicationLatte/Template.php:50 Latte\Engine->render()
…/Application/Responses/TextResponse.php:50 Nette\Bridges\ApplicationLatte\Template->render()
…/src/Application/Application.php:157 Nette\Application\Responses\TextResponse->send()
…/src/Application/Application.php:85 Nette\Application\Application->processRequest()
…/docs/www/html/omi/formular/www/index.php:10 Nette\Application\Application->run()
- nightfish
- Člen | 519
Problém je, že voláš addConditionOn()
po
getSeparatorPrototype()
:
$form->addRadioList("ou",'',$ouvarianta)
->setOption('id', 'db-ou')
->getSeparatorPrototype()->setName('') # tady je problém, protože getSeparatorPrototype() vrací Html
->addConditionOn($form['db'],Form::EQUAL, true)
->setRequired('Přístup k osobním údajům je potřeba vyplnit.');
Řešením je rozdělit to na víc částí, třeba takto:
$radioList = $form->addRadioList("ou",'',$ouvarianta)
->setOption('id', 'db-ou');
$radioList->getSeparatorPrototype()->setName('');
$radioList->addConditionOn($form['db'],Form::EQUAL, true)
->setRequired('Přístup k osobním údajům je potřeba vyplnit.');
- Allconius
- Člen | 317
Ahoj, díky nakonec jsem vyhodil to getSeparatorPrototype(), dá se ta podmínka zdvojit tzn. že by bylo:
<?php
$form->addRadioList("ou",'',$ouvarianta)
->setOption('id', 'db-ou')
->addConditionOn($form['db'], Form::EQUAL, TRUE)
->addConditionOn($form['opravneni1'], Form::EQUAL, 1)
->setRequired('Přístup k osobním údajům je potřeba vyplnit.');
?>
?