在TYPO3分机转发时选择第一个对象

时间:2015-06-26 07:40:26

标签: php typo3 extbase

目前,我的代码如下所示:

public function listAction() {
    $this->forward('show', NULL, NULL, array('myArgument' => 14));
}

它将用户直接转发到'show'视图。它始终使用UID 14转发到对象。当用户删除此对象时,将发生错误。

代码应该将用户转发到列表中的第一个元素。是否有类似forward('show', NULL, NULL, array('myArgument' => first))的内容?

ext_localconf.php 中使用'show'作为默认操作也会导致错误,因为我没有定义任何参数。

2 个答案:

答案 0 :(得分:0)

没有这样的想法,但有没有理由不通过数据库获取UID?

public function listAction() {
    $firstObject = $this->myobjectRepository->findFirstObject(); // just pseudocode

    $this->forward('show', NULL, NULL, array('myArgument' => $firstObject->getUid()));
}

答案 1 :(得分:0)

public function listAction() {
    $firstObject = $this->myobjectRepository->findAll()->getFirst(); // just pseudocode

    $this->forward('show', NULL, NULL, array('myArgument' => $firstObject->getUid()));
}

使用此方法,您将第一个对象的uid发送到另一个方法(例如show),因此您需要通过调用存储库(例如findByUid)来获取对象

您还可以对show方法使用正确的注释,以便将您的参数视为对象

/**
     * action show
     *
     * @param \vendor\ext\Domain\Model\ModelName $modelName
     *
     * @return void
     */
    public function showAction(\vendor\ext\Domain\Model\ModelName $modelName) {
        $this->view->assign('modelName', $modelName);
    }