Yii2 控制台命令传递带有名称的参数

问题描述 投票:0回答:2

我想使用命令作为

php yii sync anyvar2=anValue  anyVar1=anyValue

在控制器中

 public function actionIndex(){
       echo $anyVar1;
       echo $anyVar2;
   }

我尝试使用 php yiisync [--anyvar2=anValue ,--anyVar1=anyValue]

php yii2
2个回答
18
投票

1)如果要设置控制器参数:

class SyncController extends \yii\console\Controller
{
    public $anyVar1;
    public $anyVar2;

    public function options($actionID)
    {
        return array_merge(parent::options($actionID), [
            'anyVar1', 'anyVar2'
        ]);
    }
}

现在你可以这样设置它们:

php yii sync --anyVar1=aaa --anyVar2=bbb

2)如果您只想将变量作为参数传递:

public function actionIndex($anyVar1, $anyVar2)
{
    // ...
}

现在你可以这样设置它们:

php yii sync aaa bbb

3
投票

找到解决方案了

当需要在控制台中传递变量时

  1. 变量应在public范围内声明。

  2. 变量应在选项函数中返回

    例如:

    class SyncController extends \yii\console\Controller
     {
      public $anyVar1;
      public $anyVar2;
    
    public function options()
    {
      return ['anyVar1','anyVar2'];
    }
    public function actionIndex(){
    
      echo $this->anyVar1."\n";
      echo $this->anyVar2."\n";
    }
    }
    

    在控制台中

php yii 同步 --anyVar2=1111 --anyVar1=999

© www.soinside.com 2019 - 2024. All rights reserved.