MembershipCheckoutComponent::validateData PHP Method

validateData() public method

public validateData ( Order $order, array $data )
$order Order
$data array
    public function validateData(Order $order, array $data)
    {
        if (Member::currentUserID()) {
            return;
        }
        $result = ValidationResult::create();
        if (Checkout::membership_required() || !empty($data['Password'])) {
            $member = Member::create($data);
            $idfield = Member::config()->unique_identifier_field;
            $idval = $data[$idfield];
            if (ShopMember::get_by_identifier($idval)) {
                // get localized field labels
                $fieldLabels = $member->fieldLabels(false);
                // if a localized value exists, use this for our error-message
                $fieldLabel = isset($fieldLabels[$idfield]) ? $fieldLabels[$idfield] : $idfield;
                $result->error(_t('Checkout.MemberExists', 'A member already exists with the {Field} {Identifier}', '', array('Field' => $fieldLabel, 'Identifier' => $idval)), $idfield);
            }
            $passwordresult = $this->passwordvalidator->validate($data['Password'], $member);
            if (!$passwordresult->valid()) {
                $result->error($passwordresult->message(), "Password");
            }
        }
        if (!$result->valid()) {
            throw new ValidationException($result);
        }
    }

Usage Example

 public function validateData(Order $order, array $data)
 {
     if (isset($data['RegisterAnAccount']) && $data['RegisterAnAccount']) {
         return parent::validateData($order, $data);
     }
     return ValidationResult::create();
 }