在 Extbase 6.2 中,列表页面不再使用 uid
In Extbase 6.2, don't use uid for list page
使用 Extbase 的 "show" 操作时:
<f:link.action action="show" arguments="{event : event}">
我想通过一个特殊的栏目('customID')来查找所说的事件。
实际的 TYPO3-uid 不应出现在 URL 中(有或没有 RealURL)。
原因是数据已经导入,"real"uid为'customId'。
@biesior 总是使用 f:link.page
的方法 – 但我想我会尝试使用官方方法。
(如何)可以在 extbase/fluid 中做到这一点?
为什么不将 realUrl 与 lookUpTable 一起使用?看这里:https://wiki.typo3.org/Realurl/manual#-.3ElookUpTable
这是可能的。假设您的模型事件有一个 属性 customId
。所以你像这样生成你的link:
<f:link.action action="show" arguments="{event : event.customId}">
生成的 link 将具有如下查询字符串:
?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参数是"just"一个整数。然后从您的 eventRepository 调用魔法方法 findOneByCustomId
。 findOne
表示您只想返回一个 Event
对象(而不是 QueryResult
),而 ByCustomId
查询您的 [=18] 的现有 属性 =] 模型.
使用 Extbase 的 "show" 操作时:
<f:link.action action="show" arguments="{event : event}">
我想通过一个特殊的栏目('customID')来查找所说的事件。
实际的 TYPO3-uid 不应出现在 URL 中(有或没有 RealURL)。
原因是数据已经导入,"real"uid为'customId'。
@biesior 总是使用 f:link.page
的方法 – 但我想我会尝试使用官方方法。
(如何)可以在 extbase/fluid 中做到这一点?
为什么不将 realUrl 与 lookUpTable 一起使用?看这里:https://wiki.typo3.org/Realurl/manual#-.3ElookUpTable
这是可能的。假设您的模型事件有一个 属性 customId
。所以你像这样生成你的link:
<f:link.action action="show" arguments="{event : event.customId}">
生成的 link 将具有如下查询字符串:
?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参数是"just"一个整数。然后从您的 eventRepository 调用魔法方法 findOneByCustomId
。 findOne
表示您只想返回一个 Event
对象(而不是 QueryResult
),而 ByCustomId
查询您的 [=18] 的现有 属性 =] 模型.