Saltar al contenido

Magento2: obtenga un valor de atributo de cliente personalizado

Solución:

Tu código funciona perfectamente bien para mí. El problema debe ser sin valor para ese atributo con el cliente_es en particular. ¿Ha probado y guardado el valor de is_vendor para customer_id 5 una vez? Me refiero a intentar cambiar el valor del atributo is_vendor y guardar ese cliente. Ahora ejecute su código, espero que obtenga el valor. Si no ha seguido el proceso anterior, obtendrá una matriz vacía porque ese atributo no tenía ningún valor establecido para esa identificación de cliente en la base de datos.

Esto no es un problema, debo decir, magento siempre funciona así solo, si crea un nuevo cliente, las cosas funcionarán bien porque el formulario del cliente tiene ese atributo y guardará su valor predeterminado, pero el cliente ya creado no tenía ese atributo. conocido por ellos, por lo tanto, debe escribir un pequeño script para guardar todos los clientes que se crearon previamente y establecer el valor que desee para ellos (este será solo un proceso de una sola vez).

El siguiente código hará el trabajo: –

$objectManager = MagentoFrameworkAppObjectManager::getInstance();
    $customerObj = $objectManager->create('MagentoCustomerModelCustomer')->getCollection();
    foreach ($customerObj as $customerObjdata) {

        $customermodel  = $objectManager->create('MagentoCustomerModelCustomer');
        $customerData = $customermodel->getDataModel();
        $customerData->setId($customerObjdata->getData('entity_id'));
        $customerData->setCustomAttribute('is_vendor', 0);
        $customermodel->updateData($customerData);

        $customerResource = $objectManager->create('MagentoCustomerModelResourceModelCustomerFactory')->create();
        $customerResource->saveAttribute($customermodel, 'is_vendor');
    }

Puede obtener todos los atributos personalizados del cliente utilizando la siguiente forma,

Simplemente reemplace su código con el siguiente y elimínelo var/generation carpeta y borre el caché del sistema y verifique.

<?php
namespace AmitshreeMarketplaceControllerIndex;

class Index extends MagentoFrameworkAppActionAction
{
    protected $resultPageFactory;

    public function __construct(        
        MagentoFrameworkAppActionContext $context,
        MagentoFrameworkViewResultPageFactory $resultPageFactory,
        MagentoCustomerApiCustomerRepositoryInterface $customerRepositoryInterface
    ) {  
        $this->resultPageFactory = $resultPageFactory;
        $this->customerRepositoryInterface = $customerRepositoryInterface;
        parent::__construct($context);
    }

    public function execute()
    {
        $customerId = 5;
        $customer = $this->customerRepositoryInterface->getById($customerId);
        $customerAttributeData = $customer->__toArray();
        $isVendor = $customerAttributeData['custom_attributes']['is_vendor']['value'];
        echo "<pre>";print_r($customerAttributeData['custom_attributes']);exit;
    }

}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *