Yii2 – Получение неизвестного свойства: yii \ console \ Application :: user

Я пытаюсь запустить консольный контроллер с терминала, но я получаю эти ошибки каждый раз

Error: Getting unknown property: yii\console\Application::user 

вот контроллер

 class TestController extends \yii\console\Controller { public function actionIndex() { echo 'this is console action'; } } 

и это сводная конфигурация

 return [ 'id' => 'app-console', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log'], 'controllerNamespace' => 'console\controllers', 'modules' => [], 'components' => [ 'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], ], ], ], 'params' => $params]; 

Я пытался запустить его с помощью этих команд без везения

 php yii test/index php yii test php ./yii test 

может ли кто-нибудь помочь?

Консольное приложение не имеет пользователя Yii->$app->user . Итак, вам нужно настроить user компонент в config\console.php .

вроде как,

Config \ console.php

  'components' => [ ......... ...... 'user' => [ 'class' => 'yii\web\User', 'identityClass' => 'app\models\User', //'enableAutoLogin' => true, ], 'session' => [ // for use session in console application 'class' => 'yii\web\Session' ], ....... ] 

Подробнее о вашей проблеме см .:

ИЛИ

Перейдите по следующей ссылке: Yii2 isGuest дает исключение в консольном приложении

Примечание. В консольном приложении нет сеанса.

Установить в \ console \ config \ main.php

 return [ 'id' => 'app-console', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log'], 'controllerNamespace' => 'console\controllers', 'components' => [ 'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], ], ], 'user' => [ 'class' => 'yii\web\User', 'identityClass' => 'app\models\Credential',// class that implements IdentityInterface //'enableAutoLogin' => true, ], ], 'params' => $params, ]; 

теперь в вашем \ console \ controller \ AbcController.php добавьте метод init

  public function init() { parent::init(); Yii::$app->user->setIdentity(Credential::findOne(['id'=><cronloginid>])); } 

создайте учетную запись cron и передайте этот идентификатор входа в переменной с этой конфигурацией, ваше поведение Blameable yii2 будет работать

Как сказал @GAMITG, вы должны настроить пользовательский компонент в файле конфигурации, но, к сожалению, вы не можете получить доступ к сеансу в консоли, потому что сеанс недоступен в консоли. Возможно, вы могли бы решить проблему следующим образом:

 $user_id = isset(Yii::$app->user->id) ? Yii::$app->user->id : 0;