@@ -366,15 +366,6 @@ protected function _initElement(
366366 $ data = $ this ->getConfigValue ($ path );
367367 }
368368 }
369- $ fieldRendererClass = $ field ->getFrontendModel ();
370- if ($ fieldRendererClass ) {
371- $ fieldRenderer = $ this ->_layout ->getBlockSingleton ($ fieldRendererClass );
372- } else {
373- $ fieldRenderer = $ this ->_fieldRenderer ;
374- }
375-
376- $ fieldRenderer ->setForm ($ this );
377- $ fieldRenderer ->setConfigData ($ this ->_configData );
378369
379370 $ elementName = $ this ->_generateElementName ($ field ->getPath (), $ fieldPrefix );
380371 $ elementId = $ this ->_generateElementId ($ field ->getPath ($ fieldPrefix ));
@@ -420,7 +411,7 @@ protected function _initElement(
420411 if ($ field ->hasOptions ()) {
421412 $ formField ->setValues ($ field ->getOptions ());
422413 }
423- $ formField ->setRenderer ($ fieldRenderer );
414+ $ formField ->setRenderer ($ this -> resolveFieldRenderer ( $ field ) );
424415 }
425416
426417 /**
@@ -791,4 +782,23 @@ private function getAppConfigDataValue($path)
791782 }
792783 return $ data ->getData ($ path );
793784 }
785+
786+ /**
787+ * @param \Magento\Config\Model\Config\Structure\Element\Field $field
788+ * @return Form\Field|\Magento\Framework\View\Element\BlockInterface
789+ * @throws \Magento\Framework\Exception\LocalizedException
790+ */
791+ private function resolveFieldRenderer (\Magento \Config \Model \Config \Structure \Element \Field $ field )
792+ {
793+ $ fieldRendererClass = $ field ->getFrontendModel ();
794+ if ($ fieldRendererClass ) {
795+ $ fieldRenderer = $ this ->_layout ->getBlockSingleton ($ fieldRendererClass );
796+ } else {
797+ $ fieldRenderer = $ this ->_fieldRenderer ;
798+ }
799+
800+ $ fieldRenderer ->setForm ($ this );
801+ $ fieldRenderer ->setConfigData ($ this ->_configData );
802+ return $ fieldRenderer ;
803+ }
794804}
0 commit comments