喜欢标题。我在vuejs下收到记录的用户数据时遇到问题。
我用 - FOS用户 - 登录 - Fos休息 - 到api - Jms Serializer
这是我从数据库中获取数据的功能
public function getUser()
{
$userId = $this->container->get('security.token_storage')->getToken()->getUser('id');
return $this->repository->FindOneBy(['id' => $userId]);
}
现在,当它处于上面的形式时,console.log在vuejs中返回一个空对象。但是,当我将$ userId更改为5时 - 例如 -
$this->repository->FindOneBy(['id' => 5]);
对象可用于数据。
现在。我检查了两种情况下的api地址 - 作品。在这两种情况下我也会返回转储。两种情况下的一切都是相同的。
这是我的日志 当$ userId
时 127.0.0.1 - - [07/Apr/2018:03:55:24 +0200] "GET /ekopanel2/web/app_dev.php/api/v1/greenker/user HTTP/1.1" 204 380 "http://localhost:8080/greenker" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0"
这是5
127.0.0.1 - - [07/Apr/2018:03:55:34 +0200] "GET /ekopanel2/web/app_dev.php/api/v1/greenker/user HTTP/1.1" 200 895 "http://localhost:8080/greenker" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0"
我注意到状态代码不同,当5为200并且正在工作时,当$ userId,状态代码为204时,所以它看起来像是空数据。
你能帮帮忙吗?
答案 0 :(得分:0)
假设您已登录。
如果没有,$ this-> container-> get(' security.token_storage') - > getToken() - > getUser()将返回字符串" anon。 "
你试过这个:
$userId = $this->container->get('security.token_storage')->getToken()->getUser()->getId();
小心检查用户是否已登录。否则,它将抛出一个异常,例如"在字符串"上调用成员函数getId()。