전화 및 전자 메일 필드에 대한 사용자 지정 유효성 검사를 통해 서버 쪽 유효성 검사를 수행하려고합니다. 양식 작업에서 사용자 지정 유효성 검사를 수행하고 있습니다.Silverstripe - 유효성 검사 후 양식 데이터 반환
첫 번째는 올바른 위치이며 두 번째는 유효성 검사를 통과하지 못하면 어떻게 데이터를 양식으로 되돌릴 수 있습니까?
현재 양식 전체가 삭제됩니다.
public function doSubmitForm($data, Form $form) {
if (!preg_match("/^[\+_a-z0-9-'&=]+(\.[\+_a-z0-9-']+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i",$data['Email'])) {
$form->addErrorMessage('Email', 'Invalid email', 'bad');
return $this->redirectBack();
}
if (!preg_match("/^((?:\+)|0)(\d{9,14})$/i",$data['Phone'])) {
$form->addErrorMessage('Phone', 'Please match the correct format eg: 0821234567', 'bad');
return $this->redirectBack();
}
$form->sessionMessage('Thank you for your submission','alert alert-success');
return $this->redirectBack();
}
감사합니다. 나는 전자 우편 검증이 좋다는 것을 본다. 전화 번호는 적어도 10 자 이상이어야합니다. 나는'Validator' 확장에 대해 읽었지만 정확히 따라 가지 않았습니다. '$ required = new RequiredFields (배열 ('Name', 'Email', 'Phone')); $ form = new Form ($ this, 'MyForm', $ fields, $ actions); \t \t \t $ form-> setValidator ($ required); ' 그래서 사용자 정의 전화 클래스를 만들고 유효성 검사를 수행해야합니까? – Craig
'TextField', 아마도'PhoneField'의 커스텀 서브 클래스를 생성하고 거기서'validate' 메소드를 구현할 것을 제안합니다 (phone-number validation으로). 'EmailField'의 코드를 시작점으로 취할 수 있습니다 ... – bummzack
전화 번호 확인을위한 https://github.com/giggsey/libphonenumber-for-php는 좋은 도구 일 수 있습니다. – wmk