Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v2.x.
#85324
Olá gostaria de adicionar dados vindos do custom_fields presente na tabela oc_address a página account/edit. Existem dois campos no address que gostaria de mostrar em account/edit, normalmente esta página apenas custom field vindo de oc_customer, mas como consigo capturar vindos de outra tabela. Já tentei usando esta linha:
Código: Selecionar todos
$data['addresses'] = $this->model_account_address->getAddresses();

    if (isset($this->session->data['shipping_address']['postcode'])) {
        $data['postcode'] = $this->session->data['shipping_address']['postcode'];
    } else {
        $data['postcode'] = '';
    }
e
Código: Selecionar todos
if (isset($this->session->data['shipping_address']['custom_field'])) {
        $data['shipping_address_custom_field'] = $this->session->data['shipping_address']['custom_field'];
    } else {
        $data['shipping_address_custom_field'] = array();
    }

E embora usando o get addresses que faz um select eu não consigo puxar os dados:
Código: Selecionar todos
public function getAddresses() {
    $address_data = array();

    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "address WHERE customer_id = '" . (int)$this->customer->getId() . "'");

    foreach ($query->rows as $result) {
        $country_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "country` WHERE country_id = '" . (int)$result['country_id'] . "'");

        if ($country_query->num_rows) {
            $country = $country_query->row['name'];
            $iso_code_2 = $country_query->row['iso_code_2'];
            $iso_code_3 = $country_query->row['iso_code_3'];
            $address_format = $country_query->row['address_format'];
        } else {
            $country = '';
            $iso_code_2 = '';
            $iso_code_3 = '';
            $address_format = '';
        }

        $zone_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "zone` WHERE zone_id = '" . (int)$result['zone_id'] . "'");

        if ($zone_query->num_rows) {
            $zone = $zone_query->row['name'];
            $zone_code = $zone_query->row['code'];
        } else {
            $zone = '';
            $zone_code = '';
        }

        $address_data[$result['address_id']] = array(
            'address_id'     => $result['address_id'],
            'firstname'      => $result['firstname'],
            'lastname'       => $result['lastname'],
            'company'        => $result['company'],
            'address_1'      => $result['address_1'],
            'address_2'      => $result['address_2'],
            'postcode'       => $result['postcode'],
            'city'           => $result['city'],
            'zone_id'        => $result['zone_id'],
            'zone'           => $zone,
            'zone_code'      => $zone_code,
            'country_id'     => $result['country_id'],
            'country'        => $country,
            'iso_code_2'     => $iso_code_2,
            'iso_code_3'     => $iso_code_3,
            //'address_format' => $address_format,
            'address_format' => '',
            'custom_field'   => json_decode($result['custom_field'], true)

        );

    }

    return $address_data;
}
No que eu estou errando? Quem poder me ajudar eu agradeço. Obrigado
#85369
Olá @vdavidmarques.

O que você deseja fazer não será possível, pois como o cliente possui a possibilidade de cadastrar mais de um endereço, quando você faz a pesquisa pelo endereço do cliente, o que retornará é um array com todos os endereços cadastrados do cliente e não somente um endereço como seu código tente trabalhar, neste caso o ideal é não fazer isso.

Espero ter ajudado. :D

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]