fuente
fuente
Si desea agregar un nuevo campo, en la cuenta del cliente, debe anular el archivo register.phtml en su tema personalizado.
Cree un tema personalizado, luego cree register.phtml en la siguiente ruta
app / design / frontend / vendor / theme / Magento_Customer / templates / form / register.phtml
Luego, copie los códigos, desde module-customer / view / frontend / templates / form / register.phtml y péguelos en el archivo creado anteriormente.
Luego, agregue su campo personalizado :
<div class="field required">
<label for="custom_field" class="label"><span><?= __('CustomField') ?></span></label>
<div class="control">
<input type="text" name="custom_field" id="custom_field" value="<?= $block->escapeHtml($block->getFormData()->getCustomField()) ?>" title="<?= __('CustomField') ?>" class="input-text" data-validate="{required:true, 'validate-phoneStrict':true}">
</div>
</div>
Antes de hacerlo, debe crear un atributo de cliente para su campo personalizado para almacenar la base de datos.
Crear el atributo del cliente:
Debe crear un módulo personalizado para hacerlo, después de crear el Módulo personalizado
Cree InstallData.php en la siguiente ruta Vendor \ Module \ Setup
InstallData.php
En este código a continuación, he agregado el atributo custom_field .
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Vendor\Module\Setup;
use Magento\Customer\Setup\CustomerSetupFactory;
use Magento\Customer\Model\Customer;
use Magento\Eav\Model\Entity\Attribute\Set as AttributeSet;
use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
/**
* Install data
* @codeCoverageIgnore
*/
class InstallData implements InstallDataInterface
{
/**
* CustomerSetupFactory
* @var CustomerSetupFactory
*/
protected $customerSetupFactory;
/**
* $attributeSetFactory
* @var AttributeSetFactory
*/
private $attributeSetFactory;
/**
* initiate object
* @param CustomerSetupFactory $customerSetupFactory
* @param AttributeSetFactory $attributeSetFactory
*/
public function __construct(
CustomerSetupFactory $customerSetupFactory,
AttributeSetFactory $attributeSetFactory
)
{
$this->customerSetupFactory = $customerSetupFactory;
$this->attributeSetFactory = $attributeSetFactory;
}
/**
* install data method
* @param ModuleDataSetupInterface $setup
* @param ModuleContextInterface $context
*/
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
/** @var CustomerSetup $customerSetup */
$customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);
$customerEntity = $customerSetup->getEavConfig()->getEntityType('customer');
$attributeSetId = $customerEntity->getDefaultAttributeSetId();
/** @var $attributeSet AttributeSet */
$attributeSet = $this->attributeSetFactory->create();
$attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);
/**
* customer registration form default field mobile number
*/
$customerSetup->addAttribute(Customer::ENTITY, 'custom_field', [
'type' => 'varchar',
'label' => 'Custom Field',
'input' => 'text',
'required' => true,
'visible' => true,
'user_defined' => true,
'sort_order' => 1000,
'position' => 1000,
'system' => 0,
]);
//add attribute to attribute set
$attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'mobile_number')
->addData([
'attribute_set_id' => $attributeSetId,
'attribute_group_id' => $attributeGroupId,
'used_in_forms' => ['adminhtml_customer', 'customer_account_create'],
]);
$attribute->save();
}
}
Después de eso, ejecute el siguiente comando:
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
php bin/magento cache:clean
Verá su archivo personalizado en el formulario de registro.
Avísame si tienes un problema.
Necesita crear un módulo y aquí está
installData.php
:Esto creará un campo y puede llamar en el archivo phtml (es decir: adicionalinfocustomer.phtml).
Puede ayudar desde estas 2 URL: IBNAB y SASHAS
Espero que te ayude.
fuente
Puede consultar el siguiente enlace para crear campos personalizados en la página de registro en magento2-
https://github.com/jainmegha5395/custom-fields
Este módulo personalizado agregará un campo y atributo personalizados en el formulario de registro. El atributo también se mostrará en el formulario para agregar o editar clientes en Magento 2 Admin.
fuente
En realidad, puede dejar que Magento 2 solicite la dirección completa en la generación de la cuenta estableciendo show_address_fields en true en el bloque de registro, luego también pregunta (además de los demás) por la compañía.
fuente