У меня есть функция, чтобы проверить, действительна ли кредитная карта или нет. Если это так, продолжайте вводить данные из формы в базу данных. Но если это не так, отобразите переданное сообщение.
Проблема заключается в том, что если существует проблема с кредитной картой, сообщение передается, но вместо выхода из функции, чтобы он не пытался продолжить и добавлять данные из формы, он добавляет данные.
Я не уверен, как остановиться. Следующий код был написан для меня, похоже, создает новую диспетчеризацию и пытается вернуться к предыдущей функции подтверждения.
function confirm() {
//This view contains the form, when user submits they go to checkout view
if (isset($data)){$this->data = $data;}
$this->set('redirect_to', 'checkout');
}
function checkout(){
if(!empty($this->data['User']['card_number'])){
$check_card = $this->BillingValidation->validate_card($this->data['User']['card_number']);
if($check_card['valid']!=false){
// card is valid !
} else {
$msg[0][] = $check_card['error'];
$flashmsg = implode('<br />',$msg[0]).implode('<br />',$msg[1]);
$this->Session->setFlash(__($flashmsg,
true),'default', array('class' => 'flash-message-success'));
//if credit card is invalid go back to confirm view
$this->autoRender = false;
$d = new Dispatcher();
$d->dispatch(array("controller" => "res", "action" => "confirm"),array("data" => $this->data));
}
}
//if credit card ok then continues to process form
}