我对TYPO3很陌生,目前很多事情都让人感到困惑,尤其是如果您依赖ExtBase,数据建模和数据获取的实际工作方式。
我想要获得的是从fe_groups
表格中获取一系列记录并将其传递到我的流体视图中,并在f:form.select
输入字段中呈现这些项目。
到目前为止,我一直没有尝试过,因为我不知道从哪里开始以及如何开始它。
我成功完成的其他事情是将硬编码的对象项数组传递到我的视图中,并成功渲染它们,如下所示:
<f:form.select
class="form-control"
property="taskTypes"
options="{taskTypes}"
optionValueField="name"
optionLabelField="value"
id="taskTypes" />
这是我的控制器中填充taskTypes
数组的方法:
private function getTaskTypes() {
$task_type_names = [
' - Task Types - ',
'New client',
'Maintenance',
];
$task_types = [];
foreach($task_type_names as $i => $task_type_name) {
$task_type = new \stdClass();
$task_type->key = $i;
$task_type->value = $task_type_name;
$task_types[] = $task_type;
}
return $task_types;
}
然后在控制器的操作中进行简单的视图分配:
$this->view->assign('taskTypes', $this->getTaskTypes());
这就像一个魅力!
但我对如何使用从数据库表中提取的动态内容做类似的事情毫无头绪。
所以,基本上,我只需要一种方法将项目从fe_groups
表传递到我的视图并进行渲染。
答案 0 :(得分:2)
您必须从Extbase注入FrontenduserGroups的Repository
/**
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserGroupRepository
* @inject
*/
protected $feUserGroupRepository;
在您的方法中,您可以使用此存储库从数据库中获取数据
$feUserGroup = $this->feUserGroupRepository->findAll();
$userByUid = $this->feUserGroupRepository->findByUid(12);
存储库还提供了更多->findBy*
方法。
这是一个可能对您有帮助的备忘单http://lbrmedia.net/codebase/Eintrag/extbase-query-methods/
注意:
@inject
实际上是由Extbase解析并加载@var
中提到的类storagePid
需要设置为包含后端用户组的文件夹的UID