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
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
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");