Я пытаюсь придумать лучший способ проверки двух полей электронной почты для формы: у меня есть поле электронной почты и поле повторного ввода электронной почты, и я хочу сравнить их, чтобы увидеть, совпадают ли они. Если нет, то отображайте сообщение об ошибке, пока пользователь не введет свой адрес электронной почты правильно для обоих полей.
Я знаю, что могут быть созданы классы настраиваемых полей, позволяющие выполнять настраиваемую проверку. но я использую два отдельных поля, а не одно, и не уверен, что пользовательский класс будет работать в этом случае, поскольку я не проверяю только одно поле.
Я последовал примеру, найденному здесь, который включает добавление пользовательской проверки в функцию отправки формы: https://docs.silverstripe.org/en/3/deve ... alidation/
Однако я не хочу никуда перенаправлять — я хочу оставайтесь в форме.
Я бы хотел сделать это как можно проще, если смогу.
Вот что у меня есть на данный момент. Кроме упомянутой проблемы, все остальное работает нормально:
public function DemoForm() {
$fieldsArr = array();
$firstName = new TextField('first_name', 'First Name');
$firstName->setAttribute('placeholder', 'First Name');
array_push($fieldsArr, $firstName);
$lastName = new TextField('last_name', 'Last Name');
$lastName->setAttribute('placeholder', 'Last Name');
array_push($fieldsArr,$lastName);
$companytName = new TextField('company_name', 'Company Name');
$companytName->setAttribute('placeholder', 'Company Name');
array_push($fieldsArr,$companytName);
$email = new EmailField('email', 'Email');
$email->setAttribute('placeholder', 'Email');
array_push($fieldsArr, $email);
$retypeemail = new EmailField('retype_email', 'Retype Email');
$retypeemail->setAttribute('placeholder', 'Retype Email');
array_push($fieldsArr, $retypeemail);
$fields = new FieldList($fieldsArr);
$actions = new FieldList(
new FormAction('submit', 'Submit')
);
$validator = new RequiredFields('first_name', 'last_name', 'email', "retype_email");
return new Form($this, 'DemoForm', $fields, $actions, $validator);
}
public function submit($data, $form) {
if($data['email'] != $data['retype_email']){
$form->addErrorMessage('Email', 'The emails do not match.', 'bad');
return $this->redirectBack();
}
else{
$demoRequest = new DemoFormSubmission();
$demoRequest->FirstName = $data['first_name'];
$demoRequest->LastName = $data['last_name'];
$demoRequest->EmailAddress =$data['email'];
$demoRequest->CompanyName = $data['company_name'];
$demoRequest->write();
$email = new Email();
$email->setTo('sara.dejaneiro@innismaggiore.com');
$email->setFrom($data['email']);
$email->setSubject("Demo request submission");
$messageBody = "
First Name: {$data['first_name']}
Last Name: {$data['last_name']}
Email: {$data['email']}
Company Name: {$data['company_name']}
";
$email->setBody($messageBody);
$email->send();
return $this->redirect("demo-request-submission-thank-you-page");
}
}
Подробнее здесь: https://stackoverflow.com/questions/475 ... they-match
Сравните два поля, чтобы увидеть, совпадают ли они. ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1732574334
Anonymous
Я пытаюсь придумать лучший способ проверки двух полей электронной почты для формы: у меня есть поле электронной почты и поле повторного ввода электронной почты, и я хочу сравнить их, чтобы увидеть, совпадают ли они. Если нет, то отображайте сообщение об ошибке, пока пользователь не введет свой адрес электронной почты правильно для обоих полей.
Я знаю, что могут быть созданы классы настраиваемых полей, позволяющие выполнять настраиваемую проверку. но я использую два отдельных поля, а не одно, и не уверен, что пользовательский класс будет работать в этом случае, поскольку я не проверяю только одно поле.
Я последовал примеру, найденному здесь, который включает добавление пользовательской проверки в функцию отправки формы: https://docs.silverstripe.org/en/3/developer_guides/forms/validation/
Однако я не хочу никуда перенаправлять — я хочу оставайтесь в форме.
Я бы хотел сделать это как можно проще, если смогу.
Вот что у меня есть на данный момент. Кроме упомянутой проблемы, все остальное работает нормально:
public function DemoForm() {
$fieldsArr = array();
$firstName = new TextField('first_name', 'First Name');
$firstName->setAttribute('placeholder', 'First Name');
array_push($fieldsArr, $firstName);
$lastName = new TextField('last_name', 'Last Name');
$lastName->setAttribute('placeholder', 'Last Name');
array_push($fieldsArr,$lastName);
$companytName = new TextField('company_name', 'Company Name');
$companytName->setAttribute('placeholder', 'Company Name');
array_push($fieldsArr,$companytName);
$email = new EmailField('email', 'Email');
$email->setAttribute('placeholder', 'Email');
array_push($fieldsArr, $email);
$retypeemail = new EmailField('retype_email', 'Retype Email');
$retypeemail->setAttribute('placeholder', 'Retype Email');
array_push($fieldsArr, $retypeemail);
$fields = new FieldList($fieldsArr);
$actions = new FieldList(
new FormAction('submit', 'Submit')
);
$validator = new RequiredFields('first_name', 'last_name', 'email', "retype_email");
return new Form($this, 'DemoForm', $fields, $actions, $validator);
}
public function submit($data, $form) {
if($data['email'] != $data['retype_email']){
$form->addErrorMessage('Email', 'The emails do not match.', 'bad');
return $this->redirectBack();
}
else{
$demoRequest = new DemoFormSubmission();
$demoRequest->FirstName = $data['first_name'];
$demoRequest->LastName = $data['last_name'];
$demoRequest->EmailAddress =$data['email'];
$demoRequest->CompanyName = $data['company_name'];
$demoRequest->write();
$email = new Email();
$email->setTo('sara.dejaneiro@innismaggiore.com');
$email->setFrom($data['email']);
$email->setSubject("Demo request submission");
$messageBody = "
[b]First Name:[/b] {$data['first_name']}
[b]Last Name:[/b] {$data['last_name']}
[b]Email: [/b] {$data['email']}
[b]Company Name:[/b] {$data['company_name']}
";
$email->setBody($messageBody);
$email->send();
return $this->redirect("demo-request-submission-thank-you-page");
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/47577632/compare-two-fields-to-see-if-they-match[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия