/** * Overridden isValid() method for pre-validation code * * @param array $formData data typically from a POST or GET request * * @return bool */ public function isValid($formData = array()) { $pageSession = new Zend_Session_Namespace('tenants_insurance_quote'); // Filter for currency elements $currencyFilterElements = array('claim_value'); foreach ($currencyFilterElements as $filterElement) { if (isset($formData[$filterElement])) { $formData[$filterElement] = preg_replace(array('/[^\\d\\.]/'), array(''), $formData[$filterElement]); } } // Check if this is an AJAX request, and ignore unneeded fields for validation by making them non-mandatory if (isset($formData['addClaim']) || isset($formData['removeClaim'])) { $this->getElement('declaration1')->setRequired(false); $this->getElement('declaration2')->setRequired(false); $this->getElement('declaration3')->setRequired(false); $this->getElement('declaration4')->setRequired(false); $this->getElement('declaration_confirmation')->setRequired(false); } else { // Not an AJAX request // Selectively make details sections mandatory if their corresponding Qs are marked "Yes" if (isset($formData['declaration1']) && $formData['declaration1'] == 'yes') { $this->getElement('declaration1_details')->setRequired(true); } if (isset($formData['declaration2']) && $formData['declaration2'] == 'yes') { $pageSession = new Zend_Session_Namespace('tenants_insurance_quote'); // Invoke the previous claims manager $claimsManager = new Manager_Insurance_PreviousClaims(); // If no claims have been entered, make the claim input fields mandatory if ($claimsManager->countPreviousClaims($pageSession->CustomerRefNo) == 0) { $this->getElement('claim_type')->setRequired(true); $this->getElement('claim_month')->setRequired(true); $this->getElement('claim_year')->setRequired(true); $this->getElement('claim_value')->setRequired(true); $this->getElement('claim_confirm')->setRequired(true); } } if (isset($formData['declaration3']) && $formData['declaration3'] == 'yes') { $this->getElement('declaration3_details')->setRequired(true); } if (isset($formData['declaration4']) && $formData['declaration4'] == 'yes') { $this->getElement('declaration4_details')->setRequired(true); } } // Check if a new claim's details is being added and if so make fields mandatory if (isset($formData['addClaim']) && $formData['addClaim'] == 1) { $this->getElement('claim_type')->setRequired(true); $this->getElement('claim_month')->setRequired(true); $this->getElement('claim_year')->setRequired(true); $this->getElement('claim_value')->setRequired(true); $this->getElement('claim_confirm')->setRequired(true); } // Call original isValid() return parent::isValid($formData); }