回答:
顧客IDに基づいて住所を取得できないため、このコードは機能しません。
$address = $this->_addressRepository->getByCustomerId($customerId);//error
getByCustomerId
メソッドがサービスコントラクトクラスに存在しないため。
ただし、次のコードでデータサービスコントラクトの顧客クラスを使用できます。
$customerId = $_POST["customer_id"];
$customer = $this->_customerRepository->getById($customerId);
$addresses = $customer->getAddresses();
のgetAddresses
配列が返されることに注意してくださいMagento\Customer\Api\Data\AddressInterface
。
デフォルトの請求先住所が必要な場合は、次の番号に電話してください。
$billingAddress = $customer->getDefaultBilling();
.phtmlファイルの注文IDを使用して顧客のアドレスを取得するには
$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'];
}
protected $_address;
public function __construct(
...
\Magento\Customer\Model\Address $address,
...
)
{
...
$this->_address = $address;
...
}
あなたの関数で使用してください:-
$addressObj = $this->_address;
$addressObj->load($addressid);
あなたは以下のようにアドレスコレクションを得ることができます:-
$addresses = $addressObj->getCollection();
$プライベート$ 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());
}
$customer->getDefaultBilling();
それを使用するとNULLが返されます