I want to add product chooser field like this
[![enter image description here][1]][1]
[1]: https://i.sstatic.net/BCOiO.png
I am using this code but its not working anyone please help me.
<pre>
<?php
namespace Kam\Auction\Block\Adminhtml\Product\Edit\Tab;
use Exception;
use Kam\Auction\Helper\Data;
use Kam\Auction\Model\ResourceModel\Product\Source\AllProductsForAuction;
use Magento\Backend\Block\Template\Context;
use Magento\Backend\Block\Widget\Form\Generic;
use Magento\Backend\Block\Widget\Tab\TabInterface;
use Magento\Catalog\Model\ProductFactory;
use Magento\Framework\Data\FormFactory;
use Magento\Framework\Registry;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
use Magento\Store\Model\System\Store;
/**
* Class Main
* @package Kam\Auction\Block\Adminhtml\Product\Edit\Tab
*/
class Main extends Generic implements TabInterface
{
/**
* @var Store
*/
protected $_systemStore;
/**
* @var ProductFactory
*/
protected $_productloader;
/**
* @var AllProductsForAuction
*/
protected $_allProducts;
/**
* @var array configuration of Auction
*/
protected $helper;
/**
* @var TimezoneInterface
*/
private $timezone;
/**
* @param Context $context
* @param Registry $registry
* @param FormFactory $formFactory
* @param Store $systemStore
* @param ProductFactory $_productloader
* @param AllProductsForAuction $allProducts
* @param Data $helper
* @param TimezoneInterface $timezone
* @param array $data
*/
public function __construct(
Context $context,
Registry $registry,
FormFactory $formFactory,
Store $systemStore,
ProductFactory $_productloader,
AllProductsForAuction $allProducts,
Data $helper,
TimezoneInterface $timezone,
array $data = []
) {
$this->helper = $helper;
$this->_allProducts = $allProducts;
$this->_systemStore = $systemStore;
$this->_productloader = $_productloader;
$this->timezone = $timezone;
parent::__construct($context, $registry, $formFactory, $data);
}
/**
* @return Main
* @throws \Magento\Framework\Exception\LocalizedException
* @throws Exception
*/
protected function _prepareForm()
{
$model = $this->_coreRegistry->registry('lofauction_product');
$dateFormat = $this->_localeDate->getDateFormat(\IntlDateFormatter::SHORT);
$form = $this->_formFactory->create();
//$form->setUseContainer(true);
$fieldset = $form->addFieldset(
'options_fieldset',
['legend' => __('Product Information'), 'class' => 'fieldset-wide fieldset-widget-options']
);
if ($model->getId()) {
$fieldset->addField('auction_entity_id', 'hidden', ['name' => 'auction_entity_id']);
}
if (!$model->getProductId()) {
$chooserField = $fieldset->addField(
'options_fieldset_entity_id',
'label',
[
'name' => 'product_id',
'label' => __('Product'),
'required' => true,
'class' => 'widget-option',
'note' => __("Select a product"),
]
);
/*Add chooser helper for the field*/
$helperData = [
'data' => [
'button' => ['open' => __("Select Product...")]
]
];
// $chooserField->setValue('product/' . $model->getProductId());
// Fixes Require product.
$chooserField->setValue($model->getProductId());
$helperBlock = $this->getLayout()->createBlock(
'Magento\Catalog\Block\Adminhtml\Product\Widget\Chooser',
'',
$helperData
);
$helperBlock->setConfig($helperData)
->setFieldsetId($fieldset->getId())
->prepareElementHtml($chooserField)
->setValue($model->getId());
} else {
$fieldset->addField(
'product_id',
'note',
[
'name' => 'product_id',
'label' => __('Product'),
'title' => __('Product'),
'text' => $this->helper->getProductbyId($model->getProductId())->getName()
]
);
}
</pre>
Please help me.how can we add one product choose field..?