2016-02-22 3 views
2

В моей странице оплаты я только хочу, чтобы проверить форму ввода CREDIT_CARD для необходимости и куб.см, если выбрать входной payment_type == «CREDIT_CARD»CakePHP 3 добавить условное подтверждение

Я попытался http://book.cakephp.org/3.0/en/core-libraries/validation.html#conditional-validation в модели, но в то время как она работала в этом действии, но может привести к ошибкам на администратор редактирования и уведомлениях об ошибках в других областях приложения:

$validator 
    ->add('creditcard_number', [ 
    'cc' => [ 
     'rule' => 'cc', 
      'message' => 'Please enter valid Credit Card', 
      'on' => function ($context) { 
      return $context['data']['payment_method'] == 'credit_card'; 
      } 
    ], 
]); 

есть ли способ, чтобы добавить правило проверки к методу контроллера в CakePHP 3?

ответ

1

в конечном итоге делает это так, кажется, работает хорошо:

Контроллер/OrdersController.php:

$order = $this->Orders->patchEntity($order, $this->request->data, ['validate' => 'review']); 

Модель/Таблица/OrdersTable.php:

public function validationReview(Validator $validator) 
{ 
    $validator = $this->validationDefault($validator); 

    $validator->allowEmpty('creditcard_number', function ($context) { 
     return $context['data']['payment_method'] === 'cod'; 
    }); 

    $validator->add('creditcard_number', 'cc', [ 
     'rule' => 'cc', 
     'message' => 'Please enter valid Credit Card', 
     'on' => function ($context) { 
      return $context['data']['payment_method'] === 'credit_card'; 
     } 
    ]); 

    $validator->notEmpty('creditcard_number', 'Credit Card is required', function ($context) { 
     return $context['data']['payment_method'] === 'credit_card'; 
    }); 

    return $validator; 
} 
Смежные вопросы