如何在 TYPO3 中获取 fe_groups 的数组?

How to get an array of fe_groups in TYPO3?

我是 TYPO3 的新手,目前很多事情都令人困惑,尤其是如果您依赖 ExtBase,数据建模和数据获取实际上是如何工作的。

我想要实现的是从 fe_groups table 获取一组记录并将其传递到我的 Fluid 视图中并在 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());

这很有魅力!

但我不知道如何对从数据库中获取的动态内容做类似的事情tables。

所以,基本上,我只需要一种方法将项目从 fe_groups table 传递到我的视图并呈现它们。

您必须从 Extbase 注入 FrontenduserGroups 的存储库

 /**
 * @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
  • 中引用的class
  • storagePid 需要设置为包含后端用户组的文件夹的 UID