2016-12-13 12 views
1

複数選択フィールド(belongsToMany)に少なくとも1つの項目がチェック/選択されていることを確認します。私は2つのエンティティを持っています:マルチセレクションの検証CakePHP 3 belongsToManyのエントリ

ListingsとpaymentsTypes - belongsToMany。

私のフィールドはヘルパーを使用して作成されています。私のListingsModel.phpファイルで

echo $this->Form->input('payment_types._ids', ['options' => $paymentTypes, 'multiple' => 'checkbox']); 

次のように私は私のバリデータを設定している:

public function validationDefault(Validator $validator) { 

     $validator = new Validator(); 

     $validator->requirePresence('payment_types._ids'); 

     return $validator; 

} 

これは「起きてから保存するが、私はドンを防ぎます検証エラーメッセージが表示されます。 HTML5フォームの検証は、テキスト型の他のフィールドと同じように機能しないのはなぜですか?

+0

このリンクを確認http://book.cakephp.org/2.0/en/models/data-validation.html#Validation::multiple –

答えて

1

私はこのカスタムルールとそれを管理:これは特によく書籍に記載されていない

->add('delivery_types', [ 
     'multiple'=>[ 
      'rule'=>['multiple', ['min'=>1]], 
      'message'=>'Select at least one method of delivery method' 
     ] 
]) 

ので、うまくいけば、それはあなたがケーキV.3

0

で始まる他の人にいくつかの助けになるiwllネストされたバリデーター - http://book.cakephp.org/3.0/en/core-libraries/validation.html#nesting-validatorsでこれを達成できるはずです。

例として:

public function validationDefault(Validator $validator) { 
     $paymentTypesValidator = new Validator(); 
     $paymentTypesValidator->requirePresence('_ids'); 

     $validator-> addNested('payment_types', $paymentTypesValidator); 

     return $validator; 
    } 

あなたは、あなたが必要とする他のルールと$paymentTypesValidatorオブジェクトを飾ることができます。