Validace formuláře po zaškrtnutí checkboxu

Dan Hundrt
Člen | 74
+
0
-

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
+
0
-

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');
Dan Hundrt
Člen | 74
+
0
-

@MajklNajt super, díky moc. Příště budu více hledat :-)