Reading list Switch to dark mode

    Create Custom Type Field In Admin Form Magento2

    Updated 6 July 2016

    Create Custom Type Field In Admin Form Magento2 – In many cases , when we need to create a custom type field in admin form. which can handle our custom data. so here i am going to explain, how to create a custom type field in admin form.you have to just follow these steps to create custom type field in form.
    1 . go to your admin form page
    Webkul\CustomFormField\Block\Adminhtml\Customformfield\Edit\Tab\Form

    namespace Webkul\CustomFormField\Block\Adminhtml\Customformfield\Edit\Tab;
    
    class Form extends \Magento\Backend\Block\Widget\Form\Generic 
    implements \Magento\Backend\Block\Widget\Tab\TabInterface
    {
        /**
        * @var \Magento\Store\Model\System\Store
        */
        protected $_systemStore;
        /**
         * @param \Magento\Backend\Block\Template\Context $context
         * @param \Magento\Framework\Data\FormFactory     $formFactory
         * @param \Magento\Store\Model\System\Store       $systemStore
         * @param array                                   $data
         */
        public function __construct(
            \Magento\Backend\Block\Template\Context $context,
            \Magento\Framework\Data\FormFactory $formFactory,
            \Magento\Store\Model\System\Store $systemStore,
            array $data = []
        ) {
            $this->_systemStore = $systemStore;
            parent::__construct($context, $formFactory, $data);
        }
    
        /**
        * Prepare form
        *
        * @return $this
        */
        protected function _prepareForm()
        {
            $form = $this->_formFactory->create();
            $form->setHtmlIdPrefix('customfield_');
            $fieldset = $form->addFieldset(
                'base_fieldset',
                ['legend' => __('Custom Form Field'), 'class' => 'fieldset-wide']
            );
            $fieldset->addType(
                'mycustomfield',
                '\Webkul\CustomFormField\Block\Adminhtml\Customformfield\Edit\Renderer\CustomRenderer'
            );
            $this->setForm($form); 
            return parent::_prepareForm();
    
        }
    }

    In above code i have created a custom type field (mycustomfield) and also define a renderer file path for it.Now We have to create renderer file on above mentioned location.

    2 . create renderer file
    here i have created renderer file on this location.
    Webkul\CustomFormField\Block\Adminhtml\Customformfield\Edit\Renderer\CustomRenderer

    namespace Webkul\CustomFormField\Block\Adminhtml\Customformfield\Edit\Renderer;
    
    /**
    * CustomFormField Customformfield field renderer
    */
    class CustomRenderer extends \Magento\Framework\Data\Form\Element\AbstractElement
    {
        /**
        * Get the after element html.
        *
        * @return mixed
        */
        public function getAfterElementHtml()
        {
            // here you can write your code.
            $customDiv = '<div style="width:600px;height:200px;margin:10px 0;border:2px solid #000" id="customdiv"><h1 style="margin-top: 12%;margin-left:40%;">Custom Div</h1></div>';
            return $customDiv;
        }
    }

    3 . now you can use name of custom type field as a field type for another field.

    * Prepare form
    *
    * @return $this
    */
    protected function _prepareForm()
    {
        $form = $this->_formFactory->;create();
        $form->setHtmlIdPrefix('customfield_');
        $fieldset = $form->addFieldset(
            'base_fieldset',
            ['legend' => __('Custom Form Field'), 'class' => 'fieldset-wide']
        );
        $fieldset->addType(
            'mycustomfield',
            '\Webkul\CustomFormField\Block\Adminhtml\Customformfield\Edit\Renderer\CustomRenderer'
        );
        $fieldset->addField(
            'custom div',
            'mycustomfield',
            [
                'name'  => 'customdiv',
                'label' => __('Custom Div'),
                'title' => __('Custom Div'),
              
            ]
        );
        $this->setForm($form); 
        return parent::_prepareForm();
    }

    Now your div will be display like that in a admin form

    Searching for an experienced
    Magento 2 Company ?
    Find out More

    Screenshot_1

     

    hope so it will help you.

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    3 comments

  • Sathish Kumar
    • Sales Account
  • Roman Snitko
  • Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home