私は、電話と電子メールフィールドのカスタム検証でサーバー側の検証をしようとしています。私はフォームアクションでカスタム検証をしています。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'メソッドを実装することをお勧めします。あなたは 'EmailField'のコードを出発点として取ることができます。 – bummzack
は電話番号を検証するためのものです。https://github.com/giggsey/libphonenumber-for-phpは良いツールかもしれません。 – wmk