![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-customer/Block/Adminhtml/Edit/Tab/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Customer\Block\Adminhtml\Edit\Tab; use Magento\Customer\Api\Data\AttributeMetadataInterface; /** * Generic block that uses customer metatdata attributes. * * @SuppressWarnings(PHPMD.DepthOfInheritance) */ class GenericMetadata extends \Magento\Backend\Block\Widget\Form\Generic { /** * @var \Magento\Framework\Reflection\DataObjectProcessor */ protected $dataObjectProcessor; /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Framework\Data\FormFactory $formFactory * @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor * @param array $data */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Framework\Registry $registry, \Magento\Framework\Data\FormFactory $formFactory, \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor, array $data = [] ) { $this->dataObjectProcessor = $dataObjectProcessor; parent::__construct($context, $registry, $formFactory, $data); } /** * Set Fieldset to Form * * @param AttributeMetadataInterface[] $attributes attributes that are to be added * @param \Magento\Framework\Data\Form\Element\Fieldset $fieldset * @param array $exclude attributes that should be skipped * @return void */ protected function _setFieldset($attributes, $fieldset, $exclude = []) { $this->_addElementTypes($fieldset); foreach ($attributes as $attribute) { // Note, ignoring whether its visible or not, if (($inputType = $attribute->getFrontendInput()) && !in_array( $attribute->getAttributeCode(), $exclude ) && ('media_image' != $inputType || $attribute->getAttributeCode() == 'image') ) { $fieldType = $inputType; $element = $fieldset->addField( $attribute->getAttributeCode(), $fieldType, [ 'name' => $attribute->getAttributeCode(), 'label' => __($attribute->getFrontendLabel()), 'class' => $attribute->getFrontendClass(), 'required' => $attribute->isRequired(), 'note' => $attribute->getNote() ] ); $element->setAfterElementHtml($this->_getAdditionalElementHtml($element)); $this->_applyTypeSpecificConfigCustomer($inputType, $element, $attribute); } } } /** * Apply configuration specific for different element type * * @param string $inputType * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @param AttributeMetadataInterface $attribute * @return void */ protected function _applyTypeSpecificConfigCustomer( $inputType, $element, AttributeMetadataInterface $attribute ) { switch ($inputType) { case 'select': $element->setValues($this->_getAttributeOptionsArray($attribute)); break; case 'multiselect': $element->setValues($this->_getAttributeOptionsArray($attribute)); $element->setCanBeEmpty(true); break; case 'date': $element->setDateFormat($this->_localeDate->getDateFormatWithLongYear()); break; case 'multiline': $element->setLineCount($attribute->getMultilineCount()); break; default: break; } } /** * @param AttributeMetadataInterface $attribute * @return array */ protected function _getAttributeOptionsArray(AttributeMetadataInterface $attribute) { $options = $attribute->getOptions(); $result = []; foreach ($options as $option) { $result[] = $this->dataObjectProcessor->buildOutputDataArray( $option, \Magento\Customer\Api\Data\OptionInterface::class ); } return $result; } }