{"id":936,"date":"2023-12-19T19:14:03","date_gmt":"2023-12-19T13:44:03","guid":{"rendered":"https:\/\/magecurious.com\/blog\/?p=936"},"modified":"2025-01-11T22:53:40","modified_gmt":"2025-01-11T17:23:40","slug":"how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2","status":"publish","type":"post","link":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/","title":{"rendered":"How to Add Dynamic Row Multi Select Option in system.xml Configuration in Magento 2"},"content":{"rendered":"\n<p>Hello Everyone,<\/p>\n\n\n\n<p>In this blog, we will learn about how to Add Dynamic Row Option in system.xml in Magento 2.<\/p>\n\n\n\n<p>In our previous blog we already learned how to create system.xml configuration files and various select option types.<\/p>\n\n\n\n<p>Without wasting your time, let us guide you straight away. Follow the easy step given below to Add Dynamic Row Multi Select Option in Configuration File in Magento 2.<\/p>\n\n\n\n<p><strong>STEPS FOR ADD DYNAMIC ROW OPTION IN MAGENTO 2<\/strong><\/p>\n\n\n\n<p><strong>Step 1: Create system.xml file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/etc\/adminhtml\/system.xml<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;?xml version=&quot;1.0&quot;?&gt;\n\n&amp;lt;config xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot; xsi:noNamespaceSchemaLocation=&quot;urn:magento:module:Magento_Config:etc\/system_file.xsd&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0&amp;lt;system&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;tab id=&quot;magecurious&quot; class=&quot;magecurious&quot; translate=&quot;label&quot; sortOrder=&quot;10&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;label&gt;Magecurious&amp;lt;\/label&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;\/tab&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;section id=&quot;extension&quot; translate=&quot;label&quot; sortOrder=&quot;10&quot; showInDefault=&quot;1&quot; showInWebsite=&quot;1&quot; showInStore=&quot;1&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;class&gt;separator-top&amp;lt;\/class&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;label&gt;Magecurious&amp;lt;\/label&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;tab&gt;magecurious&amp;lt;\/tab&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;resource&gt;Vendor_Extension::config_extension&amp;lt;\/resource&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;group id=&quot;general&quot; translate=&quot;label&quot; type=&quot;text&quot; sortOrder=&quot;1&quot; showInDefault=&quot;1&quot; showInWebsite=&quot;1&quot; showInStore=&quot;1&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;label&gt;General Configuration&amp;lt;\/label&gt;\n\n&amp;lt;field id=&quot;enable&quot; translate=&quot;label&quot; type=&quot;select&quot; sortOrder=&quot;1&quot; showInDefault=&quot;1&quot; showInWebsite=&quot;1&quot; showInStore=&quot;1&quot;&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;label&gt;Enable Extension&amp;lt;\/label&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;source_model&gt;Magento\\Config\\Model\\Config\\Source\\Enabledisable&amp;lt;\/source_model&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;\/field&gt;\n\n&amp;lt;field id=&quot;vendor_dynamic_field&quot; translate=&quot;label&quot; sortOrder=&quot;10&quot; showInDefault=&quot;1&quot; showInWebsite=&quot;1&quot; showInStore=&quot;1&quot;&gt;\n\n&amp;lt;label&gt;Dynamic Row&amp;lt;\/label&gt;\n\n&amp;lt;frontend_model&gt;Vendor\\Extension\\Block\\Adminhtml\\Form\\Field\\Row&amp;lt;\/frontend_model&gt;\n\n&amp;lt;backend_model&gt;Magento\\Config\\Model\\Config\\Backend\\Serialized\\ArraySerialized&amp;lt;\/backend_model&gt;\n\n&amp;lt;\/field&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;\/group&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;lt;\/section&gt;\n\n\u00a0\u00a0\u00a0\u00a0&amp;lt;\/system&gt;\n\n&amp;lt;\/config&gt;\n<\/pre><\/div>\n\n\n<p><strong>Step 2: Create Column.php file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/Block\/Adminhtml\/Form\/Field\/Column.php<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;?php\n\nnamespace Vendor\\Extension\\Block\\Adminhtml\\Form\\Field;\n\nuse Magento\\Framework\\View\\Element\\Html\\Select;\n\nclass Column extends Select\n\n{\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* SetInputName function\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param &#x5B;type] $value\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0public function setInputName($value)\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $this-&gt;setName($value);\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* SetInputId function\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param &#x5B;type] $value\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0public function setInputId($value)\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $this-&gt;setId($value);\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* Render block HTML\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return string\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0public function _toHtml()\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!$this-&gt;getOptions()) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;setOptions($this-&gt;getSourceOptions());\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return parent::_toHtml();\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* GetSourceOptions function\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return array\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0private function getSourceOptions()\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return &#x5B;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#x5B;&#039;label&#039; =&gt; &#039;Yes&#039;, &#039;value&#039; =&gt; &#039;1&#039;],\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#x5B;&#039;label&#039; =&gt; &#039;No&#039;, &#039;value&#039; =&gt; &#039;0&#039;],\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\n\u00a0\u00a0\u00a0\u00a0}\n\n}\n<\/pre><\/div>\n\n\n<p><strong>Step 3: Create Row.php file<\/strong><\/p>\n\n\n\n<p><strong>app\/code\/Vendor\/Extension\/Block\/Adminhtml\/Form\/Field\/Row.php<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;?php\n\nnamespace Vendor\\Extension\\Block\\Adminhtml\\Form\\Field;\n\nuse Magento\\Config\\Block\\System\\Config\\Form\\Field\\FieldArray\\AbstractFieldArray;\n\nuse Magento\\Framework\\DataObject;\n\nuse Magento\\Framework\\Exception\\LocalizedException;\n\nuse Vendor\\Extension\\Block\\Adminhtml\\Form\\Field\\Column;\n\nclass Row extends AbstractFieldArray\n\n{\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var Templete\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0private $templeteRenderer;\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* Prepare rendering the new field by adding all the needed columns\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0protected function _prepareToRender()\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;addColumn(&#039;text_1&#039;, &#x5B;&#039;label&#039; =&gt; __(&#039;Text 1&#039;), &#039;class&#039; =&gt; &#039;required-entry&#039;]);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;addColumn(&#039;text_2&#039;, &#x5B;&#039;label&#039; =&gt; __(&#039;Text 2&#039;), &#039;class&#039; =&gt; &#039;required-entry&#039;]);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;addColumn(&#039;templete&#039;, &#x5B;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;label&#039; =&gt; __(&#039;Select&#039;),\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;renderer&#039; =&gt; $this-&gt;getTempleteRenderer()\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;_addAfter = false;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;_addButtonLabel = __(&#039;Add Row&#039;);\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* Prepare existing row data object\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param DataObject $row\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @throws LocalizedException\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0protected function _prepareArrayRow(DataObject $row): void\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$options = &#x5B;];\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$templete = $row-&gt;getTemplete();\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($templete !== null) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$options&#x5B;&#039;option_&#039; . $this-&gt;getTempleteRenderer()-&gt;calcOptionHash($templete)] = &#039;selected=&quot;selected&quot;&#039;;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$row-&gt;setData(&#039;option_extra_attrs&#039;, $options);\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return Templete\n\n\u00a0\u00a0\u00a0\u00a0\u00a0* @throws LocalizedException\n\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\n\u00a0\u00a0\u00a0\u00a0private function getTempleteRenderer()\n\n\u00a0\u00a0\u00a0\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!$this-&gt;templeteRenderer) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;templeteRenderer = $this-&gt;getLayout()-&gt;createBlock(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Column::class,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#039;&#039;,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#x5B;&#039;data&#039; =&gt; &#x5B;&#039;is_render_to_js_template&#039; =&gt; true]]\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $this-&gt;templeteRenderer;\n\n\u00a0\u00a0\u00a0\u00a0}\n\n}\n<\/pre><\/div>\n\n\n<p><strong>Step 4: Finally run the below commands<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$ php bin\/magento cache:clean\n\n$ php bin\/magento cache:flush\n<\/pre><\/div>\n\n\n<p><strong>Step 5: Output:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/ygYsJpl5o09MKhjjd5-ccEN3m2jqwkgTPd2GKlapGKwhVvXHPVytayUpoJDjWPxL0ud7ULYSaizUP1947v7W1J_BvabZGmBxuXOVJ7LvfxXFaG6OAqX0H-kJ_Cqo9ocLdDCs5jkdvX-Eo7x7jacyQlA\" alt=\"\"\/><\/figure>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Final Thoughts:<\/strong><\/h2>\n\n\n\n<p>So this was the easiest way which we have told you in this blog. This is how you can Add Dynamic Row Multi Select Option in the system.xml configuration file in Magento 2. Hope you liked the blog.<\/p>\n\n\n\n<p>So quickly go to the comment box and tell me how you like this blog?<\/p>\n\n\n\n<p><strong>Stay tuned with us on our site to get new updates of Magento.<\/strong><\/p>\n\n\n\n<p>Thanks for reading and visiting our site.<\/p>\n\n\n<!-- FeedbackWP Plugin --><div  class=\"rmp-widgets-container rmp-wp-plugin rmp-main-container js-rmp-widgets-container js-rmp-widgets-container--936 \"  data-post-id=\"936\">    <!-- Rating widget -->  <div class=\"rmp-rating-widget js-rmp-rating-widget\">          <p class=\"rmp-heading rmp-heading--title\">        How useful was this post?      <\/p>              <p class=\"rmp-heading rmp-heading--subtitle\">        Click on a star to rate it!      <\/p>        <div class=\"rmp-rating-widget__icons\">      <ul class=\"rmp-rating-widget__icons-list js-rmp-rating-icons-list\">                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Not at all useful\" data-value=\"1\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star \"><\/i>          <\/li>                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Somewhat useful\" data-value=\"2\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star \"><\/i>          <\/li>                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Useful\" data-value=\"3\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star \"><\/i>          <\/li>                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Fairly useful\" data-value=\"4\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star \"><\/i>          <\/li>                  <li class=\"rmp-rating-widget__icons-list__icon js-rmp-rating-item\" data-descriptive-rating=\"Very useful\" data-value=\"5\">              <i class=\"js-rmp-rating-icon rmp-icon rmp-icon--ratings rmp-icon--star \"><\/i>          <\/li>              <\/ul>    <\/div>    <p class=\"rmp-rating-widget__hover-text js-rmp-hover-text\"><\/p>        <button class=\"rmp-rating-widget__submit-btn rmp-btn js-submit-rating-btn\">      Submit Rating    <\/button>    <p class=\"rmp-rating-widget__results js-rmp-results rmp-rating-widget__results--hidden\">      Average rating <span class=\"rmp-rating-widget__results__rating js-rmp-avg-rating\">0<\/span> \/ 5. Vote count: <span class=\"rmp-rating-widget__results__votes js-rmp-vote-count\">0<\/span>    <\/p>    <p class=\"rmp-rating-widget__not-rated js-rmp-not-rated \">      No votes so far! Be the first to rate this post.    <\/p>    <p class=\"rmp-rating-widget__msg js-rmp-msg\"><\/p>  <\/div>  <!--Structured data -->        <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hello Everyone, In this blog, we will learn about how to Add Dynamic Row Option in system.xml in Magento 2. In our previous blog we already learned how to create system.xml configuration files and various select option types. Without wasting your time, let us guide you straight away. Follow the easy step given below to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":937,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-magento-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Add Dynamic Row in system.xml Configuration- Magento 2<\/title>\n<meta name=\"description\" content=\"Learn to add dynamic row multi-select options in Magento 2&#039;s system.xml to create flexible multi-select fields in the admin panel.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Add Dynamic Row in system.xml Configuration- Magento 2\" \/>\n<meta property=\"og:description\" content=\"Learn to add dynamic row multi-select options in Magento 2&#039;s system.xml to create flexible multi-select fields in the admin panel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Magecurious\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-19T13:44:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-11T17:23:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2023\/12\/image_2023_12_19T11_51_04_669Z.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1260\" \/>\n\t<meta property=\"og:image:height\" content=\"496\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Magecurious\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Magecurious\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Add Dynamic Row in system.xml Configuration- Magento 2","description":"Learn to add dynamic row multi-select options in Magento 2's system.xml to create flexible multi-select fields in the admin panel.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/","og_locale":"en_US","og_type":"article","og_title":"Add Dynamic Row in system.xml Configuration- Magento 2","og_description":"Learn to add dynamic row multi-select options in Magento 2's system.xml to create flexible multi-select fields in the admin panel.","og_url":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/","og_site_name":"Magecurious","article_published_time":"2023-12-19T13:44:03+00:00","article_modified_time":"2025-01-11T17:23:40+00:00","og_image":[{"width":1260,"height":496,"url":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2023\/12\/image_2023_12_19T11_51_04_669Z.png","type":"image\/png"}],"author":"Magecurious","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Magecurious","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/#article","isPartOf":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/"},"author":{"name":"Magecurious","@id":"https:\/\/magecurious.com\/blog\/#\/schema\/person\/6bced7da0991e7fbbd4550006a6494e2"},"headline":"How to Add Dynamic Row Multi Select Option in system.xml Configuration in Magento 2","datePublished":"2023-12-19T13:44:03+00:00","dateModified":"2025-01-11T17:23:40+00:00","mainEntityOfPage":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/"},"wordCount":216,"commentCount":0,"publisher":{"@id":"https:\/\/magecurious.com\/blog\/#organization"},"image":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/#primaryimage"},"thumbnailUrl":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2023\/12\/image_2023_12_19T11_51_04_669Z.png","articleSection":["Magento 2 Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/","url":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/","name":"Add Dynamic Row in system.xml Configuration- Magento 2","isPartOf":{"@id":"https:\/\/magecurious.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/#primaryimage"},"image":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/#primaryimage"},"thumbnailUrl":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2023\/12\/image_2023_12_19T11_51_04_669Z.png","datePublished":"2023-12-19T13:44:03+00:00","dateModified":"2025-01-11T17:23:40+00:00","description":"Learn to add dynamic row multi-select options in Magento 2's system.xml to create flexible multi-select fields in the admin panel.","breadcrumb":{"@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/#primaryimage","url":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2023\/12\/image_2023_12_19T11_51_04_669Z.png","contentUrl":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2023\/12\/image_2023_12_19T11_51_04_669Z.png","width":1260,"height":496},{"@type":"BreadcrumbList","@id":"https:\/\/magecurious.com\/blog\/how-to-add-dynamic-row-multi-select-option-in-system-xml-configuration-in-magento-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/magecurious.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Add Dynamic Row Multi Select Option in system.xml Configuration in Magento 2"}]},{"@type":"WebSite","@id":"https:\/\/magecurious.com\/blog\/#website","url":"https:\/\/magecurious.com\/blog\/","name":"Magecurious","description":"Blog","publisher":{"@id":"https:\/\/magecurious.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/magecurious.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/magecurious.com\/blog\/#organization","name":"Magecurious","url":"https:\/\/magecurious.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/magecurious.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2026\/03\/cropped-New_Project.png","contentUrl":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2026\/03\/cropped-New_Project.png","width":596,"height":113,"caption":"Magecurious"},"image":{"@id":"https:\/\/magecurious.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/magecurious.com\/blog\/#\/schema\/person\/6bced7da0991e7fbbd4550006a6494e2","name":"Magecurious","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/magecurious.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c9178df2190b2309da97c9f28dd475bc338275cf664d12678d7e5da51c761271?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c9178df2190b2309da97c9f28dd475bc338275cf664d12678d7e5da51c761271?s=96&d=mm&r=g","caption":"Magecurious"},"sameAs":["https:\/\/magecurious.com"],"url":"https:\/\/magecurious.com\/blog\/author\/magecurious-wp\/"}]}},"jetpack_featured_media_url":"https:\/\/magecurious.com\/blog\/wp-content\/uploads\/2023\/12\/image_2023_12_19T11_51_04_669Z.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/posts\/936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/comments?post=936"}],"version-history":[{"count":0,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/posts\/936\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/media\/937"}],"wp:attachment":[{"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/media?parent=936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/categories?post=936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/magecurious.com\/blog\/wp-json\/wp\/v2\/tags?post=936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}