如何使用TYPO3 extbase从子对象获取父信息

时间:2014-10-18 11:24:45

标签: typo3 fluid extbase

我有一个古典课程和日期关系(一门课程有很多日期)。接下来的课程将列在页面上。我使用正常的findAll()方法加载所有日期,并使用startDate进行排序。现在我需要父课程信息才能显示课程详情。

在日期控制器中我有

/**
 * Course
 *
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\ITServicePN\ItspnKurse\Domain\Model\Kurse>
 */
protected $kurse = NULL;

/**
 * Returns the Courses
 * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\ITServicePN\ItspnKurse\Domain\Model\Kurse> $kurse
 */
public function getKurse() {
    return $this->kurse;
}

这使我在使用f:debug {date.kurse}:

时返回课程
TYPO3\CMS\Extbase\Persistence\ObjectStorageprototypeobject (1 items) ... => ITServicePN\ItspnKurse\Domain\Model\Kurseprototypepersistent entity (uid=8, pid=51)
      title => 'The name of the course' ...

但是当我尝试访问{date.kurse.title}时,我遇到了TYPO3异常:

#1: PHP Warning: spl_object_hash() expects parameter 1 to be object, string given in /var/www/vhosts/it-service-pn.de/cetba/typo3_src-6.2.3/typo3/sysext/extbase/Classes/Persistence/ObjectStorage.php line 174

怎么做,用extbase和流体来正确获取父对象信息?

1 个答案:

答案 0 :(得分:2)

根据您的模型,kurse是一个ObjectStorage。这意味着当访问流体中的date.kurse时,您将获得一个数组。 您可以使用for-Viewhelper

在流体中迭代该数组
<f:for each="{date.kurse}" as="kurs">
    Kurs: {kurs.title}
</f:for>

您还可以打印迭代索引以获取编号的库尔斯列表。

<f:for each="{date.kurse}" as="kurs" iteration="i">
    {i.cycle}. Kurs: {kurs.title}
</f:for>