customer_address
Agregué un atributo personalizado del cliente como tipo y se ejecuta correctamente en el administrador y en la comprobación de una página, así como en la dirección de envío y facturación.
Creé:
my_namespace/my_module/etc/module.xml
y registration.php
composer.json
archivos en el directorio base del módulo.
my_namespace / my_module / Setup / InstallData.php
namespace Namespace\Module\Setup;
use Magento\Framework\Module\Setup\Migration;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
/**
* @codeCoverageIgnore
*/
class InstallData implements InstallDataInterface
{
/**
* Customer setup factory
*
* @var CustomerSetupFactory
*/
private $customerSetupFactory;
/**
* Init
*
* @param CustomerSetupFactory $customerSetupFactory
*/
public function __construct(\Magento\Customer\Setup\CustomerSetupFactory $customerSetupFactory)
{
$this->customerSetupFactory = $customerSetupFactory;
}
/**
* {@inheritdoc}
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
/** @var CustomerSetup $customerSetup */
$customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);
$setup->startSetup();
// insert attribute
$customerSetup->addAttribute('customer_address', 'attr_code', [
'label' => 'My attribute',
'type' => 'varchar',
'input' => 'text',
'position' => 45,
'visible' => true,
'required' => false,
'system' => 0
]);
$MyAttribute = $customerSetup->getEavConfig()->getAttribute('customer_address', 'attr_code');
$MyAttribute->setData(
'used_in_forms',
['adminhtml_customer_address', 'customer_address_edit', 'customer_register_address']
);
$MyAttribute->save();
$setup->endSetup();
}
}
Ahora necesito agregar un campo de atributo en el formulario de cliente add
y edit
dirección relacionado con el archivo magento_customer / view / frontend / templates / address / edit.phtml
Agregué el campo pero no puedo obtener y guardar el valor de ese atributo.
magento2
attributes
custom-attributes
customer-address
Cerveza inglesa
fuente
fuente
Respuestas:
Los atributos personalizados del cliente nunca "aparecerán" en la interfaz como lo hacen en el backend. El código que los muestra en la interfaz se encuentra en un archivo phtml personalizado.
Magento EE tiene esta funcionalidad incorporada. No estoy sugiriendo que NECESITES gastar ese dinero, solo digo que lo tiene. Si desea seguir adelante e intentar agregar atributos personalizados, es algo complejo.
En primer lugar, debe hacer todo esto en un módulo o simplemente no funcionará correctamente, y será difícil depurarlo / actualizarlo más tarde.
Tienes que hacer estas cosas:
Puede cargar sus atributos personalizados en Block PHP. Luego, simplemente agregue su diseño de la
customer_account_create.xml
siguiente manera:Esta es la salsa mágica para cargar su bloque PHP, cargar su phtml y llevarlo a la página correcta.
Honestamente, esta no es una respuesta completa, hay mucho más, pero se entiende la idea básica.
fuente
No puedo responder a su pregunta, porque no se proporciona suficiente código, pero tenga un pequeño consejo. ¿Revisaste este tutorial Tutorial para agregar attirbute de clientes ?
Desde Magento 2.1 hay un cambio y los métodos -> save () están en desuso. Debería comenzar a utilizar repositorios en su lugar. Por ejemplo, para el cliente EAV, debe usar
Magento \ Eav \ Model \ AttributeRepository
En su caso, la segunda parte del script debe cambiarse a
fuente