Validace formuláře po zaškrtnutí checkboxu
- Dan Hundrt
- Člen | 74
Zdravím,
rád bych se zeptal, jak řešit validaci formuláře na straně server v případě, že uživatel zatrhne checkbox. Objednávkový formulář:
<?php
namespace App\Forms\Front;
use App;
use App\Forms\FormFactory;
use Kdyby\Translation\Translator;
use Nette\Application\UI\Form;
use Nette\SmartObject;
use Tracy\Debugger;
class OrderForm
{
use SmartObject;
/** @var FormFactory */
private $factory;
/** @var Translator */
private $trans;
public function __construct(FormFactory $factory, Translator $trans)
{
$this->factory = $factory;
$this->trans = $trans;
}
public function create(): Form
{
$form = $this->factory->create();
$form->addText('name', $this->trans->translate('form.order.name'))
->setMaxLength(65)
->addRule(Form::FILLED, $this->trans->translate('form.order.missing.name'));
$form->addText('surname', $this->trans->translate('form.order.surname'))
->setMaxLength(65)
->addRule(Form::FILLED, $this->trans->translate('form.order.missing.surname'));
// ... other code
$form->addCheckbox('rule', $this->trans->translate('form.order.rule'))
->addRule(Form::FILLED, $this->trans->translate('form.order.missing.rule'));
$form->addCheckbox('company', $this->trans->translate('form.order.company'));
$form->addSubmit('send', $this->trans->translate('form.categories.send'));
company
return $form;
}
}
Lze nějakým způsobem přidat podmínku, pokud je zaškrtnutý checkbox ‚company‘, zvaliduje server další políčka?
Pokud si dumpnu
$form->components['company']
v datech nevidím, jestli je value true / false.
Díky
- MajklNajt
- Člen | 502
ahoj, z dokumentácie:
$form->addCheckbox('newsletters', 'zasílejte mi newslettery');
$form->addEmail('email', 'E-mail:')
// pokud je checkbox zaškrtnut
->addConditionOn($form['newsletters'], Form::EQUAL, true)
// pak vyžaduj e-mail
->setRequired('Zadejte e-mailovou adresu');