Hello Magento Community,
I have created the custom customer attribute (Yes/No).It displayed in account information tab, I want to move the custom attribute inside custom tab.
Looking forward to hear from anyone asap.
Thanks for your help
balsingh
@balsingh The attributes under the account information tab are rendered generically based on a setting you can add to the customer attribute (include in forms, it's an own mapping table). If you have a custom tab, you have to render it yourself, but the "how" depends on how you implemented the custom tab.
Hope it helps!
Thanks
Hello @rahul Gupta
Thanks for the reply,
I have created tab using block, Please check the attached code.its not saving the attribute value. can you please look into this and guide me how to proceed further in this
<?php
namespace Hemag\EDI\Block\Adminhtml\Customer\Edit;
use Magento\Customer\Controller\RegistryConstants;
use Magento\Ui\Component\Layout\Tabs\TabInterface;
use Magento\Backend\Block\Widget\Form;
use Magento\Backend\Block\Widget\Form\Generic;
use Magento\Customer\Api\CustomerRepositoryInterface;
/**
* Customer account form block
*/
class Tabs extends Generic implements TabInterface
{
/**
* @var \Magento\Store\Model\System\Store
*/
protected $_systemStore;
/**
* Core registry
*
* @var \Magento\Framework\Registry
*/
protected $_coreRegistry;
protected $customerRepository;
/**
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Framework\Registry $registry
* @param array $data
*/
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Data\FormFactory $formFactory,
\Magento\Store\Model\System\Store $systemStore,
CustomerRepositoryInterface $customerRepository,
array $data = []
) {
$this->_coreRegistry = $registry;
$this->_systemStore = $systemStore;
$this->customerRepository = $customerRepository;
parent::__construct($context, $registry, $formFactory, $data);
}
/**
* @return string|null
*/
public function getCustomerId()
{
return $this->_coreRegistry->registry(RegistryConstants::CURRENT_CUSTOMER_ID);
}
/**
* @return \Magento\Framework\Phrase
*/
public function getTabLabel()
{
return __('Hemag Settings');
}
/**
* @return \Magento\Framework\Phrase
*/
public function getTabTitle()
{
return __('Hemag Settings');
}
/**
* @return bool
*/
public function canShowTab()
{
if ($this->getCustomerId()) {
return true;
}
return false;
}
/**
* @return bool
*/
public function isHidden()
{
if ($this->getCustomerId()) {
return false;
}
return true;
}
/**
* Tab class getter
*
* @return string
*/
public function getTabClass()
{
return '';
}
/**
* Return URL link to Tab content
*
* @return string
*/
public function getTabUrl()
{
return '';
}
/**
* Tab should be loaded trough Ajax call
*
* @return bool
*/
public function isAjaxLoaded()
{
return false;
}
public function getAttributeValue()
{
$customerId = $this->getCustomerId();
if($customerId){
$customer = $this->customerRepository->getById($customerId);
$customerdata = $customer->getCustomAttribute('hemag_edi_api_customer_allowed');
if($customerdata){
return $customerdata->getValue();
}else{
return 0;
}
}else{
return 0;
}
}
public function initForm()
{
if (!$this->canShowTab()) {
return $this;
}
$form = $this->_formFactory->create();
$form->setHtmlIdPrefix('myform_');
$fieldset = $form->addFieldset('base_fieldset', ['legend' => __('Enterprice Data Integration')]);
$fieldset->addField(
'hemag_edi_api_customer_allowed',
'checkbox',
[
'name' => 'hemag_edi_api_customer_allowed',
'data-form-part' => $this->getData('customer_form'),
'label' => __('Enable API Access'),
'title' => __('If enabled, the customer is allowed to access the EDI API.'),
'value' => $this->getAttributeValue(),
'checked' => $this->getAttributeValue(),
'tabindex' => 1,
'after_element_html' => '<small>If enabled, the customer is allowed to access the EDI API.</small>',
]
);
$this->setForm($form);
return $this;
}
/**
* @return string
*/
protected function _toHtml()
{
if ($this->canShowTab()) {
$this->initForm();
return parent::_toHtml();
} else {
return '';
}
}
}
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="customer_form">
<block class="Hemag\EDI\Block\Adminhtml\Customer\Edit\Tabs" name="hemag_edi_edit_tab_view" />
</referenceBlock>
</body>
</page>Thanks