public function runAction($id, $params = []) { if (!empty($params)) { $options = $this->options($id === '' ? $this->defaultAction : $id); if (isset($params['_aliases'])) { $optionAliases = $this->optionAliases(); foreach ($params['_aliases'] as $name => $value) { if (array_key_exists($name, $optionAliases)) { $params[$optionAliases[$name]] = $value; } else { $message = Yii::t('yii', 'Unknown alias: -{name}', ['name' => $name]); if (!empty($optionAliases)) { $aliasesAvailable = []; foreach ($optionAliases as $alias => $option) { $aliasesAvailable[] = '-' . $alias . ' (--' . $option . ')'; }
$message .= '. ' . Yii::t('yii', 'Aliases available: {aliases}', [ 'aliases' => implode(', ', $aliasesAvailable) ]); } throw new Exception($message); } } unset($params['_aliases']); } foreach ($params as $name => $value) { if (!in_array($name, $options, true) && strpos($name, '-') !== false) { $kebabName = $name; $altName = lcfirst(Inflector::id2camel($kebabName)); if (in_array($altName, $options, true)) { $name = $altName; } }
if (in_array($name, $options, true)) { $default = $this->$name; if (is_array($default) && is_string($value)) { $this->$name = preg_split('/\s*,\s*(?![^()]*\))/', $value); } elseif ($default !== null) { settype($value, gettype($default)); $this->$name = $value; } else { $this->$name = $value; } $this->_passedOptions[] = $name; unset($params[$name]); if (isset($kebabName)) { unset($params[$kebabName]); } } elseif (!is_int($name)) { $message = Yii::t('yii', 'Unknown option: --{name}', ['name' => $name]); if (!empty($options)) { $message .= '. ' . Yii::t('yii', 'Options available: {options}', ['options' => '--' . implode(', --', $options)]); }
throw new Exception($message); } } }
if ($this->help) { $route = $this->getUniqueId() . '/' . $id; return Yii::$app->runAction('help', [$route]); }
return parent::runAction($id, $params); }
|