1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Setup\Option;
- /**
- * Select option in deployment config tool
- */
- class SelectConfigOption extends AbstractConfigOption
- {
- /**#@+
- * Frontend input types
- */
- const FRONTEND_WIZARD_RADIO = 'radio';
- const FRONTEND_WIZARD_SELECT = 'select';
- /**#@- */
- /**#@- */
- private $selectOptions;
- /**
- * Constructor
- *
- * @param string $name
- * @param string $frontendType
- * @param array $selectOptions
- * @param string $configPath
- * @param string $description
- * @param string|null $defaultValue
- * @param string|array|null $shortCut
- * @throws \InvalidArgumentException
- */
- public function __construct(
- $name,
- $frontendType,
- array $selectOptions,
- $configPath,
- $description = '',
- $defaultValue = null,
- $shortCut = null
- ) {
- if ($frontendType != self::FRONTEND_WIZARD_SELECT && $frontendType != self::FRONTEND_WIZARD_RADIO) {
- throw new \InvalidArgumentException("Frontend input type has to be 'select' or 'radio'.");
- }
- if (!$selectOptions) {
- throw new \InvalidArgumentException('Select options can\'t be empty.');
- }
- $this->selectOptions = $selectOptions;
- parent::__construct(
- $name,
- $frontendType,
- self::VALUE_REQUIRED,
- $configPath,
- $description,
- $defaultValue,
- $shortCut
- );
- }
- /**
- * Get available options
- *
- * @return array
- */
- public function getSelectOptions()
- {
- return $this->selectOptions;
- }
- /**
- * Validates input data
- *
- * @param mixed $data
- * @return void
- * @throws \InvalidArgumentException
- */
- public function validate($data)
- {
- if (!in_array($data, $this->getSelectOptions())) {
- throw new \InvalidArgumentException("Value specified for '{$this->getName()}' is not supported: '{$data}'");
- }
- parent::validate($data);
- }
- }
|