我正试图从终端运行控制台控制器,但每次都会出现此错误
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
有人能帮忙吗?
Console应用程序没有Yii->$app->user
。因此,您需要在config'console.php
中配置user
组件。
如
config''coconsole.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在控制台应用程序中给出异常
注意:控制台应用程序中没有会话。
在''coconsole''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,
];
现在在您的''控制台''控制器'' AbcController.php中添加init方法
public function init() {
parent::init();
Yii::$app->user->setIdentity(Credential::findOne(['id'=><cronloginid>]));
}
创建一个cron登录,并将该登录id传递到变量中。使用此配置,yii2的BlameableBehavior将在
正如@GAMITG所说,您必须在配置文件中配置用户组件,但不幸的是,您无法访问控制台中的会话,这是因为会话在控制台中不可用。也许你可以解决这样的问题:
$user_id = isset(Yii::$app->user->id) ? Yii::$app->user->id : 0;