2016-05-23 17 views
2

CakePHPは、フィールドが空であるか、電子メールフィールドが実際に電子メールアドレスかどうかをチェックする、クライアントサイドフォームの検証を自動的に行います。フィールドが間違っていると、エラーメッセージが表示され、ちょっとしたプルダウンが表示されます。CakePHPクライアントサイドフォーム検証はどこにありますか?

これはどこに管理されていますか?この種の検証をconfirm_emailフィールドに追加したいと思います。

+0

実際にはCakeとブラウザが混在しているため、さまざまなタグが追加された場合、ブラウザはHTML5検証をトリガーします(http://www.the-art-of-web.com/html/html5-form-validation ) CakePHPのフォームヘルパーは、データベースに基づいたこれらの追加を容易にします – Voycey

+0

検証ルールはすべてに設定されています。Table.php –

答えて

0

$ this-> Form-> input( 'textfield'、array( 'required' => true));

は、私はあなたがについてHTML5 Form Validationを話していると思われるいくつかのHTMLrequiredフィールドに

0

を行います。

この場合、入力にrequired="required"type="email"のような属性があるため、このようなドロップダウンが表示されることがあります。

src/Model/Table/SomeTable.phpファイル内で検証を管理することができます。 UsersTable.phpについては下記の例を参照してください。

class UsersTable extends Table { 

public function validationDefault(\Cake\Validation\Validator $validator) { 
    $validator->add('email', [ 
     'email' => [ 
      'rule' => array('email', true), 
      'message' => __('Please, set valid email address') 
     ] 
    ]) 
    ->add('password', [ 
     'length' => [ 
      'rule' => ['minLength', '8'], 
      'message' => __('Password must have at least 8 characters'), 
     ] 
    ]) 
    ->add('password_confirmation', [ 
     'length' => [ 
      'rule' => ['minLength', '8'], 
      'message' => __('Password must have at least 8 characters') 
     ], 
     'compare' => [ 
      'rule' => ['compareWith', 'password'], 
      'message' => __('Passwords should be the same'), 
     ] 
    ]) 
    return $validator; 
} 

} 

passwordpassword_confirmation上の注意を払ってください。ルールcompareWithを使用して同様に問題を解決することができます。

も参照してください。validationsについては、

+0

あなたは正しいです。私はHTML5 Form Validationを指していました。私は以下のJavascriptで電子メールバリデーターを追加することができました。 var email = document.getElementById( "email"); var confirm_email = document.getElementById( "confirm-email"); function validateEmail(){ if(email.value!= confirm_email.value){ confirm_email.setCustomValidity( "Emails Do not Match"); } else { confirm_email.setCustomValidity( ''); } } confirm_email.onchange = validateEmail; – thekthuser

+0

ああそうです。フロントエンドの検証では、[validate.js](https://validatejs.org/#validators-equality)のようなものを使用することを提案します。ある入力値が別のものと等しいことを検証するために使用できる 'equality'という名前のバリデーターがあります。ここでは、[example](https://validatejs.org/examples.html)の動作を示します。 – tsg

関連する問題