我怎样才能将对象传递给 TYPO3 中另一个页面上的特定视图?

How can I pass an object to a specific view on a another page in TYPO3?

我有一个带有两个动作的简单控制器:

  1. listAction - 显示我的对象列表
  2. showAction - 显示对象的详情页

我正在为我的插件使用 flexform 来定义详细信息页面,并且可以通过我的控制器中的设置数组访问它。标准视图(列表视图)显示我的所有带有 link 的对象到详细信息页面。此 link 将由此流体 link 操作生成:

<f:link.action action="show" arguments="{example: example}" pageUid="{pageId}">details</f:link.action>

生成的 links 如下所示:

<a href="index.php?id=38&amp;tx_example_p1%5Bexample%5D=5&amp;tx_example_p1%5Baction%5D=show&amp;tx_example_p1%5Bcontroller%5D=Example&amp;cHash=89353bbb46f26f41969f02800c5ae530">details</a>

我认为没关系,重定向到正确的详细信息页面也有效,但似乎 显示视图 没有显示,因为它不会被渲染。我的 showAction 和我的 Show.html 看起来如下:

Show.html

<f:layout name="Default" />
<f:section name="main">
    <h1>Detail page</h1>
    <f:debug>{example}</f:debug>
</f:section>

显示动作:

/**
 * Shows the details page
 *
 * @param \Fox\Example\Domain\Model\Example $example
 * @return void
 */
public function showAction(\Fox\Example\Domain\Model\Example $example) {

    $this->view->assign('example', $example);

}

所以好像fluid link action viewhelper 的动作会被忽略。当我从上面的 link 操作中删除 pageUid="{pageId}" 时,我可以看到显示视图,但我不会被重定向到正确的详细信息页面。

我做错了什么?

更新

好的,当我将前端插件也包含到详细信息页面时,它就可以工作了。有没有办法放弃双重包含?

Ok it is working when I include the frontend Plug-In to the detail page, too. Is there a way to pass up the double include?

不,它应该像这样工作 - 如果插件应该呈现在页面上,则插件必须出现在页面上。这种存在可以是间接的:

  • 您可以引用该插件(使用 "Include Records" 类型的记录或来自扩展的一些引用机制)。
  • 您可以使用 TypoScript 包含它(经常使用,如果它应该 在许多页面上)。

无论如何,如果没有特定原因在页面树中为详细信息和列表视图设置单独的页面,只需使用相同的插件将它们放在一个页面上即可。