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

Typo3:登录后显示用户特定的Json文件,json,frontend,typo3-8.x,typo3-extensions,Json,Frontend,Typo3 8.x,Typo3 Extensions,基本上,我想做一个扩展,从一个目录加载json文件,循环遍历它们,并在用户登录后显示名称和URL。我不明白应该在哪里编写代码,我试着用扩展生成器进行扩展,然后从那里开始工作,但我迷路了。 MediaListController中的My show函数: public function showAction(\Plaspack\PlaspackJson2media\Domain\Model\MediaList $mediaList) { $currentUser = $GLOBALS

基本上,我想做一个扩展,从一个目录加载json文件,循环遍历它们,并在用户登录后显示名称和URL。我不明白应该在哪里编写代码,我试着用扩展生成器进行扩展,然后从那里开始工作,但我迷路了。 MediaListController中的My show函数:

    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);
}
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\u get\u contents($filepath);
$json=json_decode($result,true);
打印(json);
$mediaItems=$json[1];
foreach($mediaItems作为$key=>$mediaItem){
echo$mediaItem[“名称”]。”、“$mediaItem[“url”]。”、“$mediaItem[“拇指url”]。”
”; } $this->view->assign('mediaList',$mediaList); }
听起来这是可行的

不要忘记缓存:
默认情况下,缓存是针对用户组进行的,而不是针对每个用户进行的。
您应该将plugin/JSON文件从常规缓存中排除,并且可以使用用户id作为缓存标记自己进行缓存


你走对了路。 请考虑:在任何类型3功能中都没有
echo
print\r
! 因为TYPO3总是将输出存储在字符串变量中,该变量会不断增强,直到最后显示字符串。因此,每个
echo
都将启动输出,头部的任何配置都将无效

看看扩展生成器创建的方法:
返回$stringvar
的方法是什么?哪个方法将结果存储在变量中(如
$this->view->assign()

在您的示例中,您可以执行
回显
,但不从刚获取的数据中分配任何内容。
如何使用
$this->view->assign('mediaList',$mediatems)
将当前列表分配给流体变量
mediaList

其他想法:
不要使用
username
uname
?)字段来区分用户,使用
uid
,用户名可以更改,用户可以删除,新用户可以选择删除的名称

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


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

老实说,我迷路了。如果使用选项1:自定义内容元素,我将从何处开始?我假设没有像yetcustom content element=FE插件这样的扩展。创建一个扩展(例如扩展生成器),此扩展定义了可存储用户信息的其他字段,并定义了至少一个未缓存(!)插件,用于创建文件(?)并为当前活动/登录的用户创建内容。我使用扩展生成器创建了一个扩展,包含3个域(用户、媒体列表、媒体)还有插件。我剩下的问题是:-我应该在哪些文件中添加用户信息的附加字段-我应该把代码放在哪里来处理插件中的文件?对不起,我还是一个输入错误3的新手,所以所有这些都在我的脑子里结了一个大结。你的用户将映射到内置表
fe\u users
。所以你要么增强
fe_用户
直接或将
fe_用户
链接到您的用户。我用应该加载json文件的代码更新了我的原始帖子,仍然不知道代码应该在哪里,在哪个文件中。