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 函数中没有 echo
或 print_r
!
因为 TYPO3 总是将输出存储在一个字符串变量中,该变量会不断增强,直到最后显示字符串。因此,每个 echo
都会启动输出,并且对头部的任何配置都将无济于事。
看看扩展构建器创建的方法:哪个方法执行 return $stringvar
?哪种方法将结果存储在变量中(如 $this->view->assign()
)?
在您的示例中,您执行了 echos
但没有从您刚刚获取的数据中分配任何内容。
$this->view->assign('mediaList', $mediaItems);
将当前列表分配给流体变量 mediaList
怎么样?
补充想法:
不要使用字段 username
(uname
?) 来区分用户,使用 uid
,用户名可以更改,用户可以删除,新用户可以 select删除的名字。
为什么选择JSON-文件?在您的扩展程序中,您可以增强数据库 fe_users table 以获得文件链接列表。
最后:你的缓存在哪里?至少禁用标准缓存,更好:输入用户特定的缓存标签
基本上我想做一个扩展,从目录加载 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 函数中没有 echo
或 print_r
!
因为 TYPO3 总是将输出存储在一个字符串变量中,该变量会不断增强,直到最后显示字符串。因此,每个 echo
都会启动输出,并且对头部的任何配置都将无济于事。
看看扩展构建器创建的方法:哪个方法执行 return $stringvar
?哪种方法将结果存储在变量中(如 $this->view->assign()
)?
在您的示例中,您执行了 echos
但没有从您刚刚获取的数据中分配任何内容。
$this->view->assign('mediaList', $mediaItems);
将当前列表分配给流体变量 mediaList
怎么样?
补充想法:
不要使用字段 username
(uname
?) 来区分用户,使用 uid
,用户名可以更改,用户可以删除,新用户可以 select删除的名字。
为什么选择JSON-文件?在您的扩展程序中,您可以增强数据库 fe_users table 以获得文件链接列表。
最后:你的缓存在哪里?至少禁用标准缓存,更好:输入用户特定的缓存标签