TYPO3路由:同一页面上的列表和详细信息操作

时间:2019-02-06 12:55:21

标签: typo3 typo3-9.x

访问详细信息页面时,会引发异常:The action "details" (controller "Products") is not allowed by this plugin.

我的路由增强器如下所示:

ProductsPlugin:
  type:              Extbase
  extension:         Myext
  plugin:            Products
  routes:
    -
      routePath:   '/{product_slug}'
      _controller: 'Products::details'
      _arguments:
        product_slug: productId
  defaultController: 'Products::list'
  defaults:
    productId: '0'
  aspects:
    product_slug:
      type: ProductsValueMapper

插件是通过 TypoScript 嵌入的:

lib.productsContent = USER
lib.productsContent {
    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    extensionName = Myext
    pluginName = Products
    vendorName = Vendor

    switchableControllerActions {
        Products {
            1 = list
        }
    }
}

[request.getQueryParams()['tx_myext_products']['productId'] > 0]
    lib.productsContent.switchableControllerActions.Products.1 = details
[end]

流体模板中的链接由以下人员生成:

<f:link.action class="button more" pageUid="38" action="details" arguments="{productId: '{product.product.id}'}">Mehr</f:link.action>

我尝试在_controllerdefaultController的列表和详细信息之间切换。我也尝试删除一个或两个,但是生成的链接包含GET-Params或Detailview创建上面的错误消息。

有人能把我推向正确的方向吗?

谢谢!

编辑: 当我删除_controller: 'Products::details'时,错误消息消失了,我的详细信息操作被正确调用。但是,到details操作的链接包含常规的GET参数。

2 个答案:

答案 0 :(得分:1)

能否请您检查此补丁? https://review.typo3.org/c/59343/包括我在内的两个人都有相同的问题。

答案 1 :(得分:0)

问题是该插件在同一页面上多次嵌入,这会导致问题。

要解决此问题,您可以创建其他插件或设置plugin.tx_myext_products.mvc.callDefaultActionIfActionCantBeResolved = 1

请参阅:https://wiki.typo3.org/Exception/CMS/1313855175