Как я могу написать консольную команду yii controller/action --param1=something --param2=anything
и получить эти именованные параметры в действии?
Я обнаружил, что в документации сказано, как это сделать, но вместо того, чтобы называть его «именованными параметрами», как я ожидал, это называется options: http://www.yiiframework.com/doc-2.0/guide-tutorial-console.html#create-command
Документы не совсем полны, хотя. Итак, вот пример:
class CustomerController extends Controller {
public $param1;
public $param2;
...
options
метод к контроллеру: public function options($actionID) {
return array_merge(parent::options($actionID), ['param1', 'param2']);
}
$actionID
должен быть указан, и parent::options($actionID)
используется для включения любых существующих опций
$this->param1
а также $this->param2
Например: public function actionSomething() {
doAnything($this->param1, $this->param2);
}
Можно комбинировать неназванные и именованные параметры. Названные из них должны быть указаны последними.
Также в документации отсутствует тот факт, что если вы укажете параметр без значения (например, --param1
вместо --param1=500
) значение $this->param1
будет логическим true
, Если вообще не указано значение будет NULL
,
Других решений пока нет …