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

时间:2017-01-02 12:41:23

标签: yii2

我想将命令用作

php yii sync anyvar2=anValue  anyVar1=anyValue

在控制器中

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

我试过php yii sync [--anyvar2 = anValue, - anyVar1 = anyValue]

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

得到解决方案

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

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

  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";
    }
    }
    

    在控制台

  3.   

    php yii sync --anyVar2 = 1111 --anyVar1 = 999