我有一个对象数组(由TYPO3生成),它来自变量$times
,看起来像这样:
TYPO3\CMS\Extbase\Persistence\Generic\QueryResultprototypeobject (8 items)
0 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=1, pid=5)
1 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=4, pid=5)
2 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=5, pid=5)
3 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=6, pid=5)
4 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=7, pid=5)
5 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=2, pid=5)
6 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=3, pid=5)
7 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=8, pid=5)
我想做的就是根据它们在数组中的位置来获取例如前两个对象。定义要检索多少个对象的数字是一个变量,如果客户愿意,可以更改该变量。
现在最困难的部分是,在我检索到前两个对象之后,当我按下FrontEnd中的按钮时,我想检索下两个对象。
基本上,当按下按钮时,应选择下两个对象。
到目前为止,我知道了:
$limit = $settings['list']['paginate']['itemsPerPage']; // How many objects should be retrieved
$setLastItem = 0; // sets the biggest position in the array of the selected objects
$args = $this->request->getArguments(); // Gets the arguments of the button
$getLastItem = $args['arguments']['lastItem']; // reads the last retrieved position of the last selected objects
if (!$getLastItem) {
$getLastItem = 0;
} // evaluate if it is NULL. (By the first load of the page, there are no arguments available)
之后,我尝试了以下操作:
while ($getLastItem < count($times)) {
$results[] = $times{$getLastItem++};
}
哪个在选定的最后一项之后给我对象。
目标:
概念:
所有这些代码都发生在名为listAction
的操作上。
在页面的第一次加载时,listAction
将从数组中检索前两个对象。这些对象将显示在前端。
$this->view->assignMultiple([
'times' => $results,
'lastItem' => $setLastItem
]);
分配的数组(时间)将呈现所选对象的信息,并且'lastItem'将作为参数放置在按钮上。
<f:form.hidden name="lastItem" value="{lastItem}"/>
按下按钮时,它将再次向listAction
发送请求,并传递在FrontEnd中显示的最后一项的参数($getLastItem
变量)。
现在listAction
应该从$getLastItem
变量的位置开始获取下两个对象,该变量是前一个选择中最后选择的对象。将要显示/选择的对象由变量$limit
定义。
预先感谢