Array to string conversion [ 2.0 版本 ]
在做API的时候 :
UserController.php
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => QueryParamAuth::className(), //问题就在这里,开启就报下面的错, 把这个注释不验证就好了。 感觉是access-token的问题。
];
$behaviors['contentNegotiator']['formats'] = ['application/json' => Response::FORMAT_JSON];
return $behaviors;
}
{
"name": "PHP Notice",
"message": "Array to string conversion",
"code": 8,
"type": "yii\base\ErrorException",
"file": "D:\phpStudy\WWW\skqianbao\vendor\yiisoft\yii2\web\User.php",
"line": 247,
"stack-trace": [
"#0 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\filters\\auth\\QueryParamAuth.php(31): yii\\web\\User->loginByAccessToken()",
"#1 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\filters\\auth\\AuthMethod.php(61): yii\\filters\\auth\\QueryParamAuth->authenticate()",
"#2 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\base\\ActionFilter.php(75): yii\\filters\\auth\\AuthMethod->beforeAction()",
"#3 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\base\\Component.php(545): yii\\base\\ActionFilter->beforeFilter()",
"#4 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\base\\Component.php(545): ::call_user_func:{D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\base\\Component.php:545}()",
"#5 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\base\\Controller.php(272): yii\\base\\Component->trigger()",
"#6 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\web\\Controller.php(164): yii\\base\\Controller->beforeAction()",
"#7 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\base\\Controller.php(154): yii\\web\\Controller->beforeAction()",
"#8 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\base\\Module.php(523): yii\\base\\Controller->runAction()",
"#9 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\web\\Application.php(102): yii\\base\\Module->runAction()",
"#10 D:\\phpStudy\\WWW\\skqianbao\\vendor\\yiisoft\\yii2\\base\\Application.php(380): yii\\web\\Application->handleRequest()",
"#11 D:\\phpStudy\\WWW\\skqianbao\\api\\web\\index.php(17): yii\\base\\Application->run()",
"#12 {main}"
]
}
frans 补充于 2017-07-23 16:40
知道问题所在了 :
yii\web\User.php
public function login(IdentityInterface $identity, $duration = 0)
{
if ($this->beforeLogin($identity, false, $duration)) {
$this->switchIdentity($identity, $duration);
$id = $identity->getId(); //这里是 user模型去实现取得主键ID, 这里竟然返回一个数组,原因在下面:
$ip = Yii::$app->getRequest()->getUserIP();
if ($this->enableSession) {
$log = "User '$id' logged in from $ip with duration $duration.";
} else {
$log = "User '$id' logged in from $ip. Session not enabled.";
}
Yii::info($log, __METHOD__);
$this->afterLogin($identity, false, $duration);
}
return !$this->getIsGuest();
}
User模型中实现这个方法:
public function getId()
{
// TODO: Implement getId() method.
return $this->primaryKey(); //TODO:这里一定要注意了, 返回的是数组而且是字段名称,而上面需要的是字符串。
return $this->id; //TODO:用这个就OK了。
}
终于跳出这个坑了。
共 0 个回答
没有找到数据。
frans
注册时间:2012-07-05
最后登录:2022-11-10
在线时长:21小时34分
最后登录:2022-11-10
在线时长:21小时34分
- 粉丝7
- 金钱1535
- 威望20
- 积分1945