![]() 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/framework/View/Layout/Argument/Interpreter/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\View\Layout\Argument\Interpreter; use Magento\Framework\Data\Argument\InterpreterInterface; use Magento\Framework\ObjectManagerInterface; /** * Interpreter that retrieves options from an option source model */ class Options implements InterpreterInterface { /** * @var ObjectManagerInterface */ protected $objectManager; /** * @param ObjectManagerInterface $objectManager */ public function __construct(ObjectManagerInterface $objectManager) { $this->objectManager = $objectManager; } /** * {@inheritdoc} * @return array Format: array(array('value' => <value>, 'label' => '<label>'), ...) * @throws \InvalidArgumentException * @throws \UnexpectedValueException */ public function evaluate(array $data) { if (!isset($data['model'])) { throw new \InvalidArgumentException('Options source model class is missing.'); } $modelClass = $data['model']; $modelInstance = $this->objectManager->get($modelClass); if (!$modelInstance instanceof \Magento\Framework\Data\OptionSourceInterface) { throw new \UnexpectedValueException( sprintf("Instance of the options source model is expected, got %s instead.", get_class($modelInstance)) ); } $result = []; foreach ($modelInstance->toOptionArray() as $value => $label) { if (is_array($label)) { $result[] = $label; } else { $result[] = ['value' => $value, 'label' => $label]; } } return $result; } }