How to Add a Drop Down in Magento 2 Admin Form
In this code snippet, we will see how to add a dropdown with custom options in Magento 2 Admin Form. We assume that you have already created a Magento 2 admin module.
Add a Drop Down in Magento 2 Admin Form
In your form file codextblog_demo_form.xml
inside app/code/Codextblog/Demo/view/adminhtml/ui_component
add below code.
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <fieldset name="general"> <field name="category" formElement="select" sortOrder="20"> <argument name="data" xsi:type="array"> <item name="options" xsi:type="object">Codextblog\Demo\Model\Source\Category</item> <item name="config" xsi:type="array"> <item name="source" xsi:type="string">Demo</item> </item> </argument> <settings> <dataType>text</dataType> <label translate="true">Blog Category</label> <dataScope>category</dataScope> <validation> <rule name="required-entry" xsi:type="boolean">true</rule> </validation> </settings> </field> </fieldset> </form>
To render options, we have specified PHP class in line no 5. Now add a Category.php
file under Codextblog/Demo/Model/Source
directory. Add below code in that file.
<?php namespace Codextblog\Demo\Model\Source; use Magento\Catalog\Model\ResourceModel\Category\CollectionFactory; use Magento\Framework\Data\OptionSourceInterface; class Category implements OptionSourceInterface { /** * @var CollectionFactory */ protected $collectionFactory; public function __construct( CollectionFactory $collectionFactory ) { $this->collectionFactory = $collectionFactory; } public function toOptionArray() { $options[] = ['label' => '-- Please Select --', 'value' => '']; $collection = $this->collectionFactory->create() ->addAttributeToSelect('*') ->addAttributeToFilter('is_active', '1'); foreach ($collection as $category) { $options[] = [ 'label' => $category->getName(), 'value' => $category->getId(), ]; } return $options; } }
If everything works well, then you will see a dropdown with categories name as an option. Cheers!!
Leave a Comment
(0 Comments)
Useful Magento 2 Articles
Author Info
Chirag
Connect With Me