Testé fonctionnel Magento 2.4! Source: How to get customer data by customer id in magento 2? (Version PDF – rakeshjesadiya.com-How to get customer data by customer id in magento 2).
ATTENTION: cet article ne traite pas de la manière de récupérer dynamiquement le customer ID
. Il sera indispensable de le connaître afin que le code ci-dessous fonctionne correctement! Voici une manière rapide de récupérer le customer ID dans un template PHTML via l’Object Manager de Magento 2 (mais il s’agit d’une mauvaise pratique, alors servez-vous en uniquement pour tester le code ci-dessous; ensuite, faites ça proprement).
Liste des données client récupérées:
ATTENTION: bien que présent, le champ Prefix
n’aura pas de valeur récupérée, même si vous avez activé la fonctionnalité d’affichage d’un champ « préfixe » (Madame, Monsieur, …) dans le formulaire de création d’un compte client et que l’utilisateur l’a renseigné lors de son inscription!
Vous pourrez afficher les valeurs récupérées dans un template PHTML en ajoutant la ligne suivante:
1 |
<?= "<pre>";print_r($customer->__toArray()); ?> |
Valeurs récupérées:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
Array ( [website_id] => 1 [email] => roni_cost@example.com [group_id] => 1 [store_id] => 1 [created_at] => 2017-11-10 13:09:03 [updated_at] => 2017-11-23 12:48:29 [disable_auto_group_change] => 0 [created_in] => Default Store View [prefix] => [firstname] => Veronica [middlename] => [lastname] => Costello [suffix] => [dob] => 1973-12-15 [default_billing] => 1 [default_shipping] => 1 [taxvat] => [confirmation] => [gender] => 2 [addresses] => Array ( [0] => Array ( [firstname] => Veronica [lastname] => Costello [street] => Array ( [0] => 6146 Honey Bluff Parkway ) [city] => Calder [country_id] => US [region] => Array ( [region] => Michigan [region_code] => MI [region_id] => 33 ) [region_id] => 33 [postcode] => 49628-7978 [telephone] => (555) 229-3326 [id] => 1 [customer_id] => 1 [default_billing] => 1 [default_shipping] => 1 ) ) [id] => 1 [extension_attributes] => Array ( [is_subscribed] => ) ) |
Code:
Il faudra créer un nouveau module app/code/MyVendor/Customer
et y surcharger le Block vendor/magento/module-customer/Block/CustomerData.php
.
app/code/MyVendor/Customer/Block/CustomerData.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php namespace MyVendor\Customer\Block; class Customer extends \Magento\Framework\View\Element\Template { /** * Constructor * * @param \Magento\Framework\View\Element\Template\Context $context * @param array $data */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository, array $data = [] ) { $this->customerRepository = $customerRepository; parent::__construct($context, $data); } /* Pass customer id $id*/ public function getCustomer($id) { return $this->customerRepository->getById($id); } } |
Dans votre template PHTML:
1 2 3 4 5 |
$customerId = 1; //pass customer id $customer = $block->getCustomer($customerId); echo $customer->getFirstname(); // result customer first name echo $customer->getEmail(); // result as customer email echo $customer->getLastname(); // customer lastname |
Les autres fichiers standard que doit comporter un module Magento 2
app/code/MyVendor/Customer/registration.php
1 |
app/code/MyVendor/Customer/etc/di.xml
1 |
app/code/MyVendor/Customer/etc/module.xml
1 |
Les commandes a exécuter pour rendre votre module disponible
1 |
magerun2 module:enable MyVendor_Customer |
1 |
magerun2 setup:upgrade |
1 |
magerun2 setup:di:compile |
1 |
magerun2 cache:clean |
Voici une manière rapide de récupérer le customer ID dans un template PHTML via l’Object Manager de Magento 2
Source: Magento 2 Get Current Customer Id. (Version PDF – tutorialsplane.com-Magento 2 Get Current Customer Id)
A savoir: l’article donne également une manière propre de faire.
1 2 3 4 5 6 7 8 |
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $customerSession = $objectManager->get('Magento\Customer\Model\Session'); if($customerSession->isLoggedIn()) { echo $customerSession->getCustomer()->getId()."<br/>"; // get Customer Id echo $customerSession->getCustomer()->getName()."<br/>"; // get Full Name echo $customerSession->getCustomer()->getEmail()."<br/>"; // get Email Name echo $customerSession->getCustomer()->getGroupId()."<br/>"; // get Customer Group Id } |