Typo3:登录后显示用户特定 Json 文件

Typo3: Display user specific Json file after login

基本上我想做一个扩展,从目录加载 json 文件,循环遍历它们并在用户登录后显示名称和缩略图 url。我不知道我应该在哪里编码为此,我尝试使用扩展构建器进行扩展并从那里开始工作,但我迷路了。 我在 MediaListController 中的显示功能:

    public function showAction(\Plaspack\PlaspackJson2media\Domain\Model\MediaList $mediaList)
{
    $currentUser = $GLOBALS['TSFE']->fe_user->user['uname'];
    $filepath = "json/mediaData_";
    $filepath .= $currentUser;
    $filepath .= ".json";
    $result = file_get_contents ($filepath);
    $json = json_decode($result,true);
    print_r($json);
    $mediaItems = $json[1];
    foreach ($mediaItems as $key => $mediaItem){
        echo $mediaItem["name"] . ", " . $mediaItem["url"]. "," . $mediaItem["thumbUrl"] ."<br>";
    }
    $this->view->assign('mediaList', $mediaList);
}

听起来是可行的。

不要忘记缓存:
默认情况下,缓存是针对用户组完成的,而不是针对每个用户群。
您应该将您的 plugin/JSON-File 从一般缓存中排除,并且可以使用用户 ID 作为缓存标签自己进行缓存。


你走对了。 考虑:在任何 TYPO3 函数中没有 echoprint_r! 因为 TYPO3 总是将输出存储在一个字符串变量中,该变量会不断增强,直到最后显示字符串。因此,每个 echo 都会启动输出,并且对头部的任何配置都将无济于事。

看看扩展构建器创建的方法:哪个方法执行 return $stringvar?哪种方法将结果存储在变量中(如 $this->view->assign())?

在您的示例中,您执行了 echos 但没有从您刚刚获取的数据中分配任何内容。
$this->view->assign('mediaList', $mediaItems); 将当前列表分配给流体变量 mediaList 怎么样?

补充想法:
不要使用字段 username (uname?) 来区分用户,使用 uid,用户名可以更改,用户可以删除,新用户可以 select删除的名字。

为什么选择JSON-文件?在您的扩展程序中,您可以增强数据库 fe_users table 以获得文件链接列表。

最后:你的缓存在哪里?至少禁用标准缓存,更好:输入用户特定的缓存标签