I have a custom tab in admin customer account edit. I have two date fields but the datepicker is not working. Below is my code.
<?php
namespace Namespace\Modulename\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;
class Tabs extends Generic implements TabInterface
{
/**
* @var \Magento\Store\Model\System\Store
*/
protected $_systemStore;
/**
* @var ObjectManagerInterface
*/
protected $_objectManager;
protected $_dob = null;
/**
* Core registry.
*
* @var \Magento\Framework\Registry
*/
protected $_coreRegistry;
/**
* @var Magento\Directory\Model\ResourceModel\Country\CollectionFactory
*/
protected $_country;
/**
* Tabs constructor.
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\Data\FormFactory $formFactory
* @param \Magento\Store\Model\System\Store $systemStore
* @param \Magento\Directory\Model\ResourceModel\Country\Collection $country
* @param \Magento\Framework\ObjectManagerInterface $objectManager
* @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,
\Magento\Directory\Model\ResourceModel\Country\Collection $country,
\Magento\Framework\ObjectManagerInterface $objectManager,
array $data = []
)
{
$this->_coreRegistry = $registry;
$this->_systemStore = $systemStore;
$this->_objectManager = $objectManager;
$this->_country = $country;
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 __('Other Account Information');
}
/**
* @return \Magento\Framework\Phrase
*/
public function getTabTitle()
{
return __('Other Account Information');
}
/**
* @return bool
*/
public function canShowTab()
{
return true;
}
/**
* @return bool
*/
public function isHidden()
{
return false;
}
/**
* 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 initForm()
{
if (!$this->canShowTab()) {
return $this;
}
/**@var \Magento\Framework\Data\Form $form */
$form = $this->_formFactory->create();
$form->setHtmlIdPrefix('custominfo_');
$customerId = $this->_coreRegistry->registry(
RegistryConstants::CURRENT_CUSTOMER_ID
);
$storeid = $this->_storeManager->getStore()->getId();
$fieldset = $form->addFieldset(
'base_fieldset',
['legend' => __('Other Profile Information')]
);
$customer = $this->_objectManager->create(
'Magento\Customer\Model\Customer'
)->load($customerId);
$contract = $this->_objectManager->create(
'Namespace\Modulename\Block\Adminhtml\Customer\Edit'
)->getContractInfoCollection();
if (isset($contract['start_date'])) {
$contract_start_date = $contract['start_date'];
} else {
$contract_start_date = "";
}
$fieldset->addField(
'start_date',
'date',
[
'name' => 'start_date',
'class' => '_has-datepicker',
'label' => __('Contract Start Date'),
'title' => __('Contract Start Date'),
'format' => $this->_localeDate->getDateFormat(\IntlDateFormatter::SHORT)
]
);
if (isset($contract['end_date'])) {
$contract_end_date = $contract['end_date'];
} else {
$contract_end_date = "";
}
$fieldset->addField(
'end_date',
'date',
[
'name' => 'end_date',
'class' => '_has-datepicker',
'label' => __('Contract End Date'),
'title' => __('Contract End Date'),
'date_format' => $this->_localeDate->getDateFormat(\IntlDateFormatter::SHORT),
'time_format' => $this->_localeDate->getTimeFormat(\IntlDateFormatter::SHORT)
]
);
$form->setUseContainer(true);
$this->setForm($form);
return parent::_prepareForm();
}
/**
* @return string
*/
protected function _toHtml()
{
if ($this->canShowTab()) {
$this->initForm();
return parent::_toHtml();
} else {
return '';
}
}
/**
* Prepare the layout.
*
* @return $this
*/
public function getFormHtml()
{
$html = parent::getFormHtml();
$html .= $this->getLayout()->createBlock(
'Namespace\Modulename\Block\Adminhtml\Customer\Edit\Js'
)->toHtml();
return $html;
}
}
Below is how it looks in the admin. It just appearing like a text box only.
Please help. Thanks in advance.