Come ottenere l'indirizzo del cliente tramite ID cliente?


9

Come ottenere l'indirizzo cliente / indirizzo di fatturazione tramite ID cliente? ecco cosa ho fatto finora:

$customerId = $_POST["customer_id"];
$customer = $this->_customerRepository->getById($customerId);
$address = $this->_addressRepository->getByCustomerId($customerId);//error

Risposte:


10

Non è possibile recuperare un indirizzo in base all'ID cliente, quindi questo codice non funzionerà mai:

$address = $this->_addressRepository->getByCustomerId($customerId);//error

Perché il getByCustomerIdmetodo non esiste nelle classi del contratto di servizio.

Quello che puoi fare, tuttavia, è utilizzare la classe cliente del contratto di servizio dati con il seguente codice:

$customerId = $_POST["customer_id"];
$customer = $this->_customerRepository->getById($customerId);
$addresses = $customer->getAddresses();

Si noti che getAddressesrestituirà una matrice di Magento\Customer\Api\Data\AddressInterface.

Se hai bisogno dell'indirizzo di fatturazione predefinito puoi chiamare:

$billingAddress = $customer->getDefaultBilling(); 

ma quando lo uso $customer->getDefaultBilling();restituisco NULL
ragazzo semplice

@simpleguy è perché il cliente che stai testando non ha probabilmente un indirizzo di fatturazione predefinito
Raphael at Digital Pianism

@RaphaelatDigitalPianism Non funziona per me. Puoi per favore far sapere agli uomini come posso ottenere questi dettagli.
Gaurav Agrawal,

Come ottenere addressID?
jafar pinjar,

6

Per ottenere l'indirizzo cliente utilizzando l'ID ordine nel file .phtml

$customerId = 3;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerObj = $objectManager->create('Magento\Customer\Model\Customer')->load($customerId);
$customerAddress = array();

foreach ($customerObj->getAddresses() as $address)
{
    $customerAddress[] = $address->toArray();
}

foreach ($customerAddress as $customerAddres) {

    echo $customerAddres['street'];
    echo $customerAddres['city'];
}

1
protected $_address;

public function __construct(
    ...
    \Magento\Customer\Model\Address $address,
    ...     
)
{
    ...
    $this->_address = $address;
    ...
}

Usa nella tua funzione: -

$addressObj = $this->_address;
$addressObj->load($addressid); 

puoi ottenere la raccolta degli indirizzi come di seguito: -

$addresses = $addressObj->getCollection();

0

$ private $ customerFactory;

public function __construct(
    \Magento\Customer\Model\CustomerFactory $customerFactory,
    Context $context
) {
    parent::__construct($context);
    $this->customerFactory = $customerFactory;
}

public function execute()
{
    $customerId = 1;
    $customer = $this->customerFactory->create();
    echo "<pre>";
    var_dump($customer->getAddressCollection()->addFieldToFilter('parent_id',$customerId)->getData());
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.