protected function getValues(AddressInterface $address, AddressFormat $addressFormat)
    {
        $values = [];
        foreach (AddressField::getAll() as $field) {
            $getter = 'get' . ucfirst($field);
            $values[$field] = $address->$getter();
        }

        // Replace the subdivision values with the names of any predefined ones.
        $originalValues = [];
        $subdivisionFields = $addressFormat->getUsedSubdivisionFields();
        $parents = [];
        foreach ($subdivisionFields as $index => $field) {
            if (empty($values[$field])) {
                // This level is empty, so there can be no sublevels.
                break;
            }
            $parents[] = $index ? $originalValues[$subdivisionFields[$index - 1]] : $address->getCountryCode();
            $subdivision = $this->subdivisionRepository->get($values[$field], $parents);
            if (!$subdivision) {
                break;
            }

            // Remember the original value so that it can be used for $parents.
            $originalValues[$field] = $values[$field];
            // Replace the value with the expected code.
            $useLocalName = Locale::matchCandidates($address->getLocale(), $subdivision->getLocale());
            $values[$field] = $useLocalName ? $subdivision->getLocalCode() : $subdivision->getCode();
            if (!$subdivision->hasChildren()) {
                // The current subdivision has no children, stop.
                break;
            }
        }

        return $values;
    }
protected function getValues(AddressInterface $address, AddressFormat $addressFormat)
    {
        $values = [];
        foreach (AddressField::getAll() as $field) {
            $getter = 'get' . ucfirst($field);
            $values[$field] = $address->$getter();
        }

        // Replace the subdivision values with the names of any predefined ones.
        $originalValues = [];
        $subdivisionFields = $addressFormat->getUsedSubdivisionFields();
        $parents = [];
        foreach ($subdivisionFields as $index => $field) {
            if (empty($values[$field])) {
                // This level is empty, so there can be no sublevels.
                break;
            }
            $parents[] = $index ? $originalValues[$subdivisionFields[$index - 1]] : $address->getCountryCode();
            $subdivision = $this->subdivisionRepository->get($values[$field], $parents);
            if (!$subdivision) {
                break;
            }

            // Remember the original value so that it can be used for $parents.
            $originalValues[$field] = $values[$field];
            // Replace the value with the expected code.
            $useLocalName = Locale::matchCandidates($address->getLocale(), $subdivision->getLocale());
            $values[$field] = $useLocalName ? $subdivision->getLocalCode() : $subdivision->getCode();
            if (!$subdivision->hasChildren()) {
                // The current subdivision has no children, stop.
                break;
            }
        }

        return $values;
    }
protected function getValues ( AddressInterface $ address , AddressFormat $ addressFormat ) { $ values = [ ] ; foreach ( AddressField :: getAll ( ) as $ field ) { $ getter = 'get' . ucfirst ( $ field ) ; $ values [ $ field ] = $ address -> $ getter ( ) ; } // Replace the subdivision values with the names of any predefined ones. $ originalValues = [ ] ; $ subdivisionFields = $ addressFormat -> getUsedSubdivisionFields ( ) ; $ parents = [ ] ; foreach ( $ subdivisionFields as $ index => $ field ) { if ( empty ( $ values [ $ field ] ) ) { // This level is empty, so there can be no sublevels. break ; } $ parents [ ] = $ index ? $ originalValues [ $ subdivisionFields [ $ index - 1 ] ] : $ address -> getCountryCode ( ) ; $ subdivision = $ this -> subdivisionRepository -> get ( $ values [ $ field ] , $ parents ) ; if ( ! $ subdivision ) { break ; } // Remember the original value so that it can be used for $parents. $ originalValues [ $ field ] = $ values [ $ field ] ; // Replace the value with the expected code. $ useLocalName = Locale :: matchCandidates ( $ address -> getLocale ( ) , $ subdivision -> getLocale ( ) ) ; $ values [ $ field ] = $ useLocalName ? $ subdivision -> getLocalCode ( ) : $ subdivision -> getCode ( ) ; if ( ! $ subdivision -> hasChildren ( ) ) { // The current subdivision has no children, stop. break ; } } return $ values ; }
Gets the address values used to build the view.

@param AddressInterface $address       The address.
@param AddressFormat    $addressFormat The address format.

@return array The values, keyed by address field.
Gets the address values used to build the view .