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

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

5

Решение

Консольное приложение не имеет 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 дает исключение в консольном приложении

Замечания : Там нет сессии в консольном приложении.

11

Другие решения

Установите в \ 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 Behavior of yii2 будет работать

4

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

$user_id = isset(Yii::$app->user->id) ? Yii::$app->user->id : 0;
1
По вопросам рекламы [email protected]