在Extbase 6.2中,不要将uid用于列表页面

时间:2016-04-04 14:38:00

标签: typo3 fluid extbase typo3-6.2.x

使用Extbase的“show”操作时:

<f:link.action action="show" arguments="{event : event}">

我想通过特殊列('customID')查找所述事件。

实际的TYPO3-uid 不应出现在网址中(有或没有RealURL)。

原因是数据已导入,“真正的”uid是'customId'。

使用f:link.page https://stackoverflow.com/a/26145125/160968总是有@ biesior的方法 - 但我想我会用官方方式尝试。

(怎么样)可以在extbase / fluid中做到这一点?

2 个答案:

答案 0 :(得分:3)

这是可能的。假设您的模型事件具有属性customId。所以你生成这样的链接:

<f:link.action action="show" arguments="{event : event.customId}">

生成的链接将具有如下的queryString:

?tx_myext[event]=9999

Extension Builder生成的showAction期望传递事件的UID。然后,PropertyMapper会自动获取对象并将其分配给视图:

/**
 * action show
 *
 * @param \Your\Extension\Domain\Model\Event $event
 * @return void
 */
public function showAction(\Your\Extension\Domain\Model\Event $event) {
    $this->view->assign('event', $event);
}

但在您的情况下,您无法通过UID获取对象,因为您传递了customId。所以你需要自己获取对象:

/**
 * action show
 *
 * @param integer $event
 * @return void
 */
public function showAction($event) {
    $event = $this->eventRepository->findOneByCustomId($event);
    $this->view->assign('event', $event);
}

注释@param integer $event告诉TYPO3参数“只是”一个整数。然后,从eventRepository调用magic方法findOneByCustomIdfindOne表示您只需要一个Event对象(而不是QueryResult),而ByCustomId则会查询Event模型的现有属性。

答案 1 :(得分:0)

Why not use realUrl with lookUpTable? See here: https://wiki.typo3.org/Realurl/manual#-.3ElookUpTable