使用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中做到这一点?
答案 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方法findOneByCustomId
。 findOne
表示您只需要一个Event
对象(而不是QueryResult
),而ByCustomId
则会查询Event
模型的现有属性。
答案 1 :(得分:0)
Why not use realUrl with lookUpTable? See here: https://wiki.typo3.org/Realurl/manual#-.3ElookUpTable