getActionOptionsHelp() public method

The returned value should be an array. The keys are the option names, and the values are the corresponding help information. Each value must be an array of the following structure: - type: string, the PHP type of this argument. - default: string, the default value of this argument - comment: string, the comment of this argument The default implementation will return the help information extracted from the doc-comment of the properties corresponding to the action options.
public getActionOptionsHelp ( Action $action ) : array
$action yii\base\Action
return array the help information of the action options
コード例 #1
0
ファイル: HelpController.php プロジェクト: drodata/yii2
 /**
  * Displays the detailed information of a command action.
  * @param Controller $controller the controller instance
  * @param string $actionID action ID
  * @throws Exception if the action does not exist
  */
 protected function getSubCommandHelp($controller, $actionID)
 {
     $action = $controller->createAction($actionID);
     if ($action === null) {
         $name = $this->ansiFormat(rtrim($controller->getUniqueId() . '/' . $actionID, '/'), Console::FG_YELLOW);
         throw new Exception("No help for unknown sub-command \"{$name}\".");
     }
     $description = $controller->getActionHelp($action);
     if ($description !== '') {
         $this->stdout("\nDESCRIPTION\n", Console::BOLD);
         $this->stdout("\n{$description}\n\n");
     }
     $this->stdout("\nUSAGE\n\n", Console::BOLD);
     $scriptName = $this->getScriptName();
     if ($action->id === $controller->defaultAction) {
         $this->stdout($scriptName . ' ' . $this->ansiFormat($controller->getUniqueId(), Console::FG_YELLOW));
     } else {
         $this->stdout($scriptName . ' ' . $this->ansiFormat($action->getUniqueId(), Console::FG_YELLOW));
     }
     $args = $controller->getActionArgsHelp($action);
     foreach ($args as $name => $arg) {
         if ($arg['required']) {
             $this->stdout(' <' . $name . '>', Console::FG_CYAN);
         } else {
             $this->stdout(' [' . $name . ']', Console::FG_CYAN);
         }
     }
     $options = $controller->getActionOptionsHelp($action);
     $options[\yii\console\Application::OPTION_APPCONFIG] = ['type' => 'string', 'default' => null, 'comment' => "custom application configuration file path.\nIf not set, default application configuration is used."];
     ksort($options);
     if (!empty($options)) {
         $this->stdout(' [...options...]', Console::FG_RED);
     }
     $this->stdout("\n\n");
     if (!empty($args)) {
         foreach ($args as $name => $arg) {
             $this->stdout($this->formatOptionHelp('- ' . $this->ansiFormat($name, Console::FG_CYAN), $arg['required'], $arg['type'], $arg['default'], $arg['comment']) . "\n\n");
         }
     }
     if (!empty($options)) {
         $this->stdout("\nOPTIONS\n\n", Console::BOLD);
         foreach ($options as $name => $option) {
             $this->stdout($this->formatOptionHelp($this->ansiFormat('--' . $name, Console::FG_RED, empty($option['required']) ? Console::FG_RED : Console::BOLD), !empty($option['required']), $option['type'], $option['default'], $option['comment']) . "\n\n");
         }
     }
 }
コード例 #2
0
 /**
  * @inheritdoc
  */
 public function getActionOptionsHelp($action)
 {
     if ($action instanceof InlineAction) {
         return parent::getActionOptionsHelp($action);
     }
     /** @var $action GenerateAction */
     $attributes = $action->generator->attributes;
     unset($attributes['templates']);
     $hints = $action->generator->hints();
     $options = parent::getActionOptionsHelp($action);
     foreach ($attributes as $name => $value) {
         $type = gettype($value);
         $options[$name] = ['type' => $type === 'NULL' ? 'string' : $type, 'required' => $value === null && $action->generator->isAttributeRequired($name), 'default' => $value, 'comment' => isset($hints[$name]) ? $this->formatHint($hints[$name]) : ''];
     }
     return $options;
 }