@byBack00
студент

Exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: yii\console\Application::getSession()'. Что делать?

Так уж вышло, что мне нужно дать команду на веб-приложении, чтобы запустился action консольного контроллера для имитации обработки в фоне запроса с постороннего сервиса и последующего заполнения полученными данными столбца таблицы в БД (через модель). Вызываю в веб контроллере action, который вызывает консольный контроллер, а именно action, который должен формировать очередь и затем запускать её. Однако когда запускаю этот action, то вываливается исключение с текстом 'Calling unknown method: yii\console\Application::getSession()'.
Сразу хочу сказать, что в конфиге консоли есть следующий код:
'components' => [
        //...another code
            'session' => [ // for use session in console application
                'class' => 'yii\web\Session'
            ],
        ],

На GitHub нашёл такой же ишью, но он заброшен без ответа. С чем может возникнуть эта проблема и как её решить, авось кто сталкивался?

UPD: метод getSession() вызывается behavior модели, к которой я вынужден обращаться. В конфигах есть компонент, который должен переопределять понятие
yii\console\Application::getSession() на yii\web\Application::getSession()
Однако этого не происходит :(
  • Вопрос задан
  • 1371 просмотр
Решения вопроса 2
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
В консоли сессия не нужна и в принципе её там нет. Поэтому и ошибка. Переведите ошибку. Все же понятно:

Вызов неизвестного метода: yii \ console \ Application :: getSession () '


Сессия (session) – это некоторый отрезок во времени, в пределах которого веб-приложение может определять все запросы от одного клиента.
Ответ написан
@byBack00 Автор вопроса
студент
Большое спасибо, Максим, за подсказки!
В общем, закончилось всё тем, что переопределил behavior, добавив исключение для консольного контроллера
if (Yii::$app instanceof Yii\console\Application) {
    //do something
}
оставив за собой возможность самостоятельно передавать необходимые данные, связанные с сессией пользователя, в action. Таким образом, необходимость в сессии просто отпала.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы