Hallo,
ich habe in einem Zend 1 Projekt eine Form die zwei Bezahlmethoden implementiert, Kreditkarte und Lastschrift. Ich möchte nun, dass wenn der Tab "Kreditkarte" ausgewählt ist, die Felder für Lastschrift nicht mehr validiert werden, bzw umgekehrt genau so
Das HTML für die Tabs ist mit Bootstrap gebaut:
Die Felder für die Kreditkarte werden über die Funktion 'addPaymentSubform()' erzeugt:
Die Felder für die Lastschrift werden über die Funktion 'addDebitSubform()' erzeugt:
z.B. ist das Feld 'cardholder' ein Pflichtfeld, soll es aber nicht mehr sein wenn der Tab "Lastschrift" gewählt ist. Wie kann man das machen?
Liebe Grüße
Kerstel
ich habe in einem Zend 1 Projekt eine Form die zwei Bezahlmethoden implementiert, Kreditkarte und Lastschrift. Ich möchte nun, dass wenn der Tab "Kreditkarte" ausgewählt ist, die Felder für Lastschrift nicht mehr validiert werden, bzw umgekehrt genau so
Das HTML für die Tabs ist mit Bootstrap gebaut:
HTML-Code:
<div class="row"> <div class="col-md-12"> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="active"><a href="#creditcard" aria-controls="home" role="tab" data-toggle="tab"><strong>Kreditkarte</strong></a></li> <li role="presentation"><a href="#debit" aria-controls="profile" role="tab" data-toggle="tab"><strong>Lastschrift</strong></a></li> </ul> <div class="tab-content"> <div role="tabpanel" class="tab-pane active" id="creditcard"> <div class="panel panel-default"> <div class="panel-heading"> <h2 class="panel-title">Zahlung per Kreditkarte</h2> </div> <div class="panel-body"> <div> <?php echo $this->partial( 'partials/checkout/address_form_payment.phtml', [ 'form' => $this->form->getSubform(Entertain_Form_UserAddressForm::SUBFORM_PAYMENT), ] ); ?> </div> </div> </div> </div> <div role="tabpanel" class="tab-pane" id="debit"> <div class="panel panel-default"> <div class="panel-heading"> <h2 class="panel-title">Zahlung per Lastschrift</h2> </div> <div class="panel-body"> <div> <?php echo $this->partial( 'partials/checkout/address_form_debit.phtml', [ 'form' => $this->form->getSubform(Entertain_Form_UserAddressForm::SUBFORM_DEBIT), ] ); ?> </div> </div> </div> </div> </div> </div> </div>
PHP-Code:
private function addPaymentSubform()
{
$subForm = new Zend_Form('payment');
$subForm
->addElement(
'select', 'creditcard', [
'label' => 'Ihre Kreditkarte',
'required' => false,
]
)
->addElement(
'text', 'cardholder', [
'label' => 'Karteninhaber',
'required' => true,
'validators' => [
['StringLength', false, ['max' => 255]],
],
]
)
->addElement(
'text', 'cardnumber', [
'label' => 'Kartennummer',
'required' => true,
'filters' => [
'Digits',
],
'validators' => [
[new Entertain_Service_Validate_CreditCardType()],
],
]
)
->addElement(
'radio', 'cardtype', [
'label' => 'Kartentyp',
'required' => true,
'multiOptions' => [
Zend_Validate_CreditCard::VISA => Zend_Validate_CreditCard::VISA,
Zend_Validate_CreditCard::MASTERCARD => Zend_Validate_CreditCard::MASTERCARD,
]
]
)
->addElement(
'text', 'cardmonth', [
'label' => 'Gültig bis (Monat/Jahr)',
'required' => true,
'filters' => [
'Digits',
],
'validators' => [
['Between', false, ['min' => 1, 'max' => 12]],
[new Entertain_Service_Validate_CreditCardDate()]
],
]
)
->addElement(
'text', 'cardyear', [
'required' => true,
'filters' => [
'Digits',
],
'validators' => [
['Between', false, ['min' => 1000, 'max' => 9999]],
[new Entertain_Service_Validate_CreditCardDate()]
],
]
)
->addElement(
'text', 'cardsecurity', [
'label' => 'Prüfnummer',
'required' => true,
'filters' => [
'Digits',
],
'validators' => [
['StringLength', false, ['min' => 3, 'max' => 3]],
],
]
)
->addElement(
'checkbox', 'save_payment_creditcard', [
'label' => 'Kreditkarte sicher speichern',
]
);
$subForm->setIsArray(true);
$this->addSubForm($subForm, 'payment');
}
PHP-Code:
private function addDebitSubform()
{
$subForm = new Zend_Form('debit');
$subForm
->addElement(
'select', 'debits', [
'label' => 'Ihre Bankverbindungen',
'required' => false,
]
)
->addElement(
'text', 'accountholder', [
'label' => 'Kontoinhaber',
'required' => true,
'validators' => [
['StringLength', false, ['max' => 255]],
],
]
)
->addElement(
'text', 'iban', [
'label' => 'IBAN Nummer',
'required' => true,
'validators' => [
[new Zend_Validate_Iban()],
],
]
)
->addElement(
'hidden', 'cardtype', [
'value' => 'debit'
]
)
->addElement(
'checkbox', 'save_payment_debit', [
'label' => 'Bankdaten sicher speichern',
]
);
$subForm->setIsArray(true);
$this->addSubForm($subForm, 'debit');
}
Liebe Grüße
Kerstel
Kommentar