【问题标题】:TYPO3: specify a plugin nameTYPO3:指定插件名称
【发布时间】:2021-05-06 03:14:36
【问题描述】:

我想链接到一个页面,我有一个插件,我想通过 GET 发送一个变量并在该页面中显示该插件的一些记录。

这个想法是有一个扩展,我可以有一个用于列出记录的插件和另一个用于显示记录详细视图的插件。 (以及另一个为此创建新记录)

我收到此错误,但我不知道这是什么意思,我应该在哪里指定插件?作为哪个参数?因为<f:link.page> 没有pluginName 参数。

有不止一个插件可以处理这个请求(扩展: “MyExtension”,控制器:“MyController”,动作:“新”)。请 指定“pluginName”参数。

<f:link.page pageUid="{settings.pageUid}" additionalParams="{theIdINeed: theIdINeed}">
link
</f:link.page>
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
  'MyVendor.MyExtension',
  'ViewPlugin',
  [
      \MyVendor\MyExtension\Controller\TheController::class => 'show',
  ],
  [
      \MyVendor\MyExtension\Controller\TheController::class => '',
  ]
);

这是我的方法,好像是这个方法之后出现的错误。

public function showAction()
{
    $model = $this->someRepository->findByUid( $_GET['theIdIneed']);
    $this->view->assign('model', $model);
}

【问题讨论】:

    标签: typo3 typo3-extensions


    【解决方案1】:

    您通常使用pluginname[action]pluginname[controller]pluginname[tablename] 等特定参数来代替一般参数(theIdIneed)。
    如果你的 ID 大多数时候是pluginname[tablename],很明显你想用匹配的控制器show这条记录,这些参数可以省略。

    通过这种方式识别插件。

    为了更好的可读性,您可以将此参数映射到伪路径段(段)。


    另一个想法(您可能需要更具体):
    如果您在一个页面上多次插入相同的插件,并且您希望这些不同的内容元素表现不同,您需要额外的信息。要么存储在全局变量中(例如 ext:news 存储已显示新闻的列表,因此同一新闻不会在同一页面上多次播放),或者您提供一个附加参数(tt_content 记录的 uid)标识特定插件应该回应。但你需要自己评估。

    【讨论】:

      【解决方案2】:

      请使用 视图助手。您可以指定操作、控制器、扩展和插件。因此不需要 GET 参数。 (我假设您从概览或搜索结果页面开始,并希望链接到详细信息插件。)

      【讨论】:

      • 是的,这是我的第一个方法,我一定有其他问题。因为在定义了控制器和链接上的操作之后,我得到了我的“显示”操作需要一个参数,但我没有得到它,这就是我将其更改为 $_GET 的原因。问题可能是我的插件默认调用此“查看”操作?我不知道该怎么做。这对我来说看起来很奇怪,为什么我在插件上定义控制器和操作(在 ext_localconf.php 中),然后又在 link.action 上定义?
      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多