yii\console\Controller::runAction PHP Method

runAction() public method

If the action ID is empty, the method will use [[defaultAction]].
See also: createAction
public runAction ( string $id, array $params = [] ) : integer
$id string the ID of the action to be executed.
$params array the parameters (name-value pairs) to be passed to the action.
return integer the status of the action execution. 0 means normal, other values mean abnormal.
    public function runAction($id, $params = [])
    {
        if (!empty($params)) {
            // populate options here so that they are available in beforeAction().
            $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 {
                        throw new Exception(Yii::t('yii', 'Unknown alias: -{name}', ['name' => $name]));
                    }
                }
                unset($params['_aliases']);
            }
            foreach ($params as $name => $value) {
                if (in_array($name, $options, true)) {
                    $default = $this->{$name};
                    if (is_array($default)) {
                        $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]);
                } elseif (!is_int($name)) {
                    throw new Exception(Yii::t('yii', 'Unknown option: --{name}', ['name' => $name]));
                }
            }
        }
        if ($this->help) {
            $route = $this->getUniqueId() . '/' . $id;
            return Yii::$app->runAction('help', [$route]);
        }
        return parent::runAction($id, $params);
    }

Usage Example

 /**
  * Extending runAction to handle extra params loaded dynamically
  * by (task) commands requirements or defined in the build script
  *
  * @inheritdoc
  */
 public function runAction($id, $params = [])
 {
     Log::logger()->addDebug('Executing application command {controller}/{action}', ['controller' => $this->id, 'action' => !empty($id) ? $id : $this->defaultAction]);
     if (!empty($params)) {
         $options = $this->options($id);
         foreach ($params as $name => $value) {
             if (!is_int($name)) {
                 if ($value !== '') {
                     if (!isset($this->_providedOptions[$name])) {
                         $this->_providedOptions[$name] = 1;
                     } else {
                         $this->_providedOptions[$name]++;
                     }
                 }
                 if (!in_array($name, $options, true)) {
                     if ($value !== '') {
                         $this->extraParams[$name] = $value;
                     }
                     unset($params[$name]);
                 }
             }
         }
     }
     parent::runAction($id, $params);
 }
All Usage Examples Of yii\console\Controller::runAction