protected function getActionArguments($action, $vars = array()) {
        $reflectionObject = new \ReflectionObject($this);
        $method = $reflectionObject->getMethod($action);
        $parameters = $method->getParameters();
        $arguments = array();
        foreach ($parameters as $param) {
            $name = $param->getName();
            if (array_key_exists($name, $vars)) {
                $arguments[] = $this->parseParameter($vars[$name], $param);
                continue;
            }
            $value = $this->setActionArguments($name);

            if (!is_null($value)){
                $arguments[] = $this->parseParameter($value, $param);
                continue;
            }
            if ($param->isDefaultValueAvailable()) {
                $arguments[] = $param->getDefaultValue();
                continue;
            }
            throw new Exception(sprintf(
                __('%s ACTION`S %s DOES NOT HAVE VALUE!'), $action, $name));
        }
        return $arguments;
    }