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

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

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

Сообщение ULTIMITE » 2017.05.19, 14:57

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

Аватара пользователя
futbolim
Сообщения: 1837
Зарегистрирован: 2012.07.08, 19:28
Откуда: Донецк

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

Сообщение futbolim » 2017.05.20, 00:27

Передайте строкой, в контроллере распарсите
Все говорят, что нужно кем-то мне становиться.
А я хотел бы остаться собой.


ULTIMITE
Сообщения: 6
Зарегистрирован: 2017.02.22, 09:09

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

Сообщение ULTIMITE » 2017.05.22, 09:14

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

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

Сообщение ElisDN » 2017.05.22, 09:48

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

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;
        }
    }
}
Не забудьте пройти мастер-класс по Yii2.

ULTIMITE
Сообщения: 6
Зарегистрирован: 2017.02.22, 09:09

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

Сообщение ULTIMITE » 2017.05.22, 13:57

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

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

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

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

public $eps = 0.0005;

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

Ответить