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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
ULTIMITE
Сообщения: 10
Зарегистрирован: 2017.02.22, 09:09

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

Сообщение ULTIMITE »

При попытке передать в action из консоли аргумент вида "--eps=0.00001" я получаю ошибку:
"Error: Unknown option: --eps"
При изменении аргумента на "eps=0.000001" все работает как надо, и я пришел к выводу, что это Yii2 как то препятствует использованию аргументов, начинающихся с "--". Но мне необходимо использовать аргумент, начинающийся с "--", подскажите, как это можно сделать?
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

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

Сообщение futbolim »

Передайте строкой, в контроллере распарсите
ULTIMITE
Сообщения: 10
Зарегистрирован: 2017.02.22, 09:09

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

Сообщение 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
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение 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;
        }
    }
}
ULTIMITE
Сообщения: 10
Зарегистрирован: 2017.02.22, 09:09

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

Сообщение ULTIMITE »

Спасибо, разобрался. Только помимо строки

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

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

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

public $eps = 0.0005;

public function options($actionID)
    {
        return ['eps'];
    }
Ответить