Kontrola jedinečných e-mailů při použití Kdyby/Replicator

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

Ahoj,

potřeboval bych poradit jak vyřešit, aby mi někdo nezadal stejné e-mailové adresy, při použití replicatoru.

<?php

$persons = $form->addDynamic('persons', function (Container $person) use ($removeEvent) {

            $person->addSelect('gender', 'Oslovení')
                    ->setItems($titleSelect)
                    ->setRequired($this->translator->translate('messages.reqperson.title'));
            $person->addText('firstname', 'Křestní jméno')
                    ->setRequired($this->translator->translate('messages.reqperson.firstname'))
                    ->setAttribute('class', 'form-control');
            $person->addText('lastname', 'Příjmení')
                    ->setRequired($this->translator->translate('messages.reqperson.lastname'))
                    ->setAttribute('class', 'form-control');
            $person->addText('email', 'E-mail')
                    ->addRule(Forms\Form::EMAIL, $this->translator->translate('messages.reqregistration.emailValid'))
                    ->setRequired($this->translator->translate('messages.reqperson.email'))
-------------->		->addRule(Forms\Form::NOT_EQUAL, "E-mail se nesmi shodovat!",ZDE NEVÍM JAK POROVNAT VŠECHNY POLOŽKY)
                    ->setAttribute('class', 'form-control');
            $person->addText('phone', 'Telefon')
                    ->setAttribute('class', 'form-control');


?>

Jde mi o to, že pokud někdo zadává více osob najednou, tak jak porovnat, že se adresy neshodují ještě před odesláním formuláře.

Předem díky za rady.

ali
Člen | 342
+
+1
-

Mam to u sebe reseno takto:

$item->addText("loc")
	->addRule(function() use ($form, $item) {// check unique record in form
		foreach ($form->getValues()->items as $id => $loc) {
			if ($id !== $item->getName() && $loc->loc === $item->getValues()->loc) {
				return FALSE;
			}
		}
		return TRUE;
	, "duplicita");