How can I add a new field which has an integer value into admin user info?
I want to add a dropdown on admin user edit form, to select any one admin user which has 'ABC' role, and that will be saved with that admin user, for that, I found a way that we can add a new column into the "admin/user" table and save that selected value when admin user edited, not on admin user create.
How can achieve this functionality with the custom module?
I used below code and its saved manager id in table but in edit form it will not showing selected value. code as below :
protected $manageData;
public function __construct(
 \Name\Module\Model\Entity\Attribute\Source\ManageData $manageData
) {
 $this->manageData = $manageData;
}
/**
 * Get form HTML
 *
 * @return string
 */
public function aroundGetFormHtml(
 \Magento\User\Block\User\Edit\Tab\Main $subject,
 \Closure $proceed
)
{
 $form = $subject->getForm();
 if (is_object($form)) {
 $baseFieldset = $form->addFieldset('admin_manageData', ['legend' => __('Manager Information')]);
 $baseFieldset->addField(
 'manageData',
 'select',
 [
 'name' => 'manageData',
 'label' => __('Select Manager'),
 'title' => __('Select Manager'),
 'values' => $this->manageData->getAllOptions(), // it has array of all the admin users with role 'Manager' 
 'class' => 'select'
 ]
 );
 $subject->setForm($form);
 }
 return $proceed();
}
Thanks.
- 
 1Did you check magento.stackexchange.com/questions/174209/… ?Sohel Rana– Sohel Rana2019年01月25日 12:26:19 +00:00Commented Jan 25, 2019 at 12:26
 - 
 will it work with custom dropdown?Utsav Gupta– Utsav Gupta2019年01月25日 13:07:44 +00:00Commented Jan 25, 2019 at 13:07
 
1 Answer 1
Try following way:
namespace SR\MagentoStackExchange\Plugin\Block\Adminhtml\User\Edit\Tab;
class Main
{
 private $registry;
 public function __construct(
 \Magento\Framework\Registry $registry
 ) {
 $this->registry = $registry;
 }
 /**
 * Get form HTML
 *
 * @return string
 */
 public function aroundGetFormHtml(
 \Magento\User\Block\User\Edit\Tab\Main $subject,
 \Closure $proceed
 ) {
 $form = $subject->getForm();
 if (is_object($form)) {
 $baseFieldset = $form->getElement('base_fieldset');
 /** @var $model \Magento\User\Model\User */
 $model = $this->registry->registry('permissions_user');
 $data = $model->getData();
 $baseFieldset->addField(
 'manage_data',
 'select',
 [
 'name' => 'manage_data',
 'label' => __('Select Manager'),
 'title' => __('Select Manager'),
 'options' => ['0' => __('--Select--'), '1' => __('Option 1'), '2' => __('Option 2'), '3' => __('Option 3')],
 'class' => 'select',
 'value' => isset($data['manage_data']) ? $data['manage_data'] : 0
 ]
 );
 $subject->setForm($form);
 }
 return $proceed();
 }
}
Now new field will adding under Account Information fieldsets. Also value will be selected. I use manage_data column name.