Страница 1 из 1

Аргумент, начинающийся с "--" в консольном приложении

Добавлено: 2017.05.19, 14:57
ULTIMITE
При попытке передать в action из консоли аргумент вида "--eps=0.00001" я получаю ошибку:
"Error: Unknown option: --eps"
При изменении аргумента на "eps=0.000001" все работает как надо, и я пришел к выводу, что это Yii2 как то препятствует использованию аргументов, начинающихся с "--". Но мне необходимо использовать аргумент, начинающийся с "--", подскажите, как это можно сделать?

Re: Аргумент, начинающийся с "--" в консольном приложении

Добавлено: 2017.05.20, 00:27
futbolim
Передайте строкой, в контроллере распарсите

Re: Аргумент, начинающийся с "--" в консольном приложении

Добавлено: 2017.05.20, 01:10
ElisDN
Добавить

Код: Выделить всё

public $eps;

Re: Аргумент, начинающийся с "--" в консольном приложении

Добавлено: 2017.05.22, 09:14
ULTIMITE
ElisDN писал(а): 2017.05.20, 01:10 Добавить

Код: Выделить всё

public $eps;
Куда добавить? Попробовал в качестве свойства класса, но это никак не помогло. Вот мой контроллер.

Код: Выделить всё

class DrillController extends Controller
{
    //public $eps; // Пробовал так
    
    public function actionCheck($drillfile, $eps = "--eps=0.0005")
    {
        try {
            $d = new DrillModel;
            return $d->CheckDrill($drillfile, $eps);
        } catch(\Exception $e) {
            echo 'Error :' . $e->getMessage() . "\r\n";
	        return 200;
        }
    }
}
Мне необходимо, чтобы строка аргумента была именно такой:
path/file.drl --eps=0.000005

Re: Аргумент, начинающийся с "--" в консольном приложении

Добавлено: 2017.05.22, 09:48
ElisDN

Код: Выделить всё

class DrillController extends Controller
{
    public $eps = 0.0005;
    
    public function actionCheck($drillfile)
    {
        try {
            $d = new DrillModel;
            return $d->CheckDrill($drillfile, $this->eps);
        } catch(\Exception $e) {
            echo 'Error :' . $e->getMessage() . "\r\n";
	        return 200;
        }
    }
}

Re: Аргумент, начинающийся с "--" в консольном приложении

Добавлено: 2017.05.22, 13:57
ULTIMITE
Спасибо, разобрался. Только помимо строки

Код: Выделить всё

public $eps = 0.0005;
надо переопределить класс options:

Код: Выделить всё

public $eps = 0.0005;

public function options($actionID)
    {
        return ['eps'];
    }