Yii2 - 变得未知 属性: yii\console\Application::user
Yii2 - Getting unknown property: 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
。所以,你需要在config\console.php
.
中配置user
组件
喜欢,
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'
],
.......
]
有关您的问题的更多信息,请参阅:Link
或
访问以下 link:
注意:控制台应用程序中没有会话。
设置在\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 添加初始化方法
public function init() {
parent::init();
Yii::$app->user->setIdentity(Credential::findOne(['id'=><cronloginid>]));
}
创建一个 cron 登录并使用此配置将登录 ID 传递给变量,yii2 的 Blameable Behavior 将起作用
正如@GAMITG 所说,您必须在配置文件中配置用户组件,但不幸的是,您无法在控制台中访问会话,那是因为会话在控制台中不可用。也许你可以这样解决问题:
$user_id = isset(Yii::$app->user->id) ? Yii::$app->user->id : 0;
我正在尝试从终端 运行 控制台控制器,但我每次都收到此错误
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
。所以,你需要在config\console.php
.
user
组件
喜欢,
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'
],
.......
]
有关您的问题的更多信息,请参阅:Link
或
访问以下 link:
注意:控制台应用程序中没有会话。
设置在\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 添加初始化方法
public function init() {
parent::init();
Yii::$app->user->setIdentity(Credential::findOne(['id'=><cronloginid>]));
}
创建一个 cron 登录并使用此配置将登录 ID 传递给变量,yii2 的 Blameable Behavior 将起作用
正如@GAMITG 所说,您必须在配置文件中配置用户组件,但不幸的是,您无法在控制台中访问会话,那是因为会话在控制台中不可用。也许你可以这样解决问题:
$user_id = isset(Yii::$app->user->id) ? Yii::$app->user->id : 0;