【问题标题】:Create a Redirect with additional query params for another plugin为另一个插件创建带有附加查询参数的重定向
【发布时间】:2019-05-29 07:29:39
【问题描述】:

我使用新闻插件添加另一个插件(我们称之为“表单”)作为详细视图的 CE。

当我在详细信息视图中填写表单并提交时,我的控制器内的重定向仅传递我的扩展的参数。

$this->redirect('success');

但我希望他也传递新闻扩展的参数,以便我进入新闻的详细信息视图,并且我的表单插件从重定向中获取他的其他操作信息。

但据我所知,redirect 方法只接受一个插件的参数。

有人有想法吗?

【问题讨论】:

    标签: typo3 extbase tx-news


    【解决方案1】:

    redirect 函数只允许您重定向到的控制器/动作的参数。没有办法添加其他get参数。

    唯一的方法是自己创建 URL 并使用 redirectToUri 函数。这将使其类似于:

    $uriBuilder = $this->getControllerContext()->getUriBuilder();
    $uri = $uriBuilder->reset()
      ->setTargetPageUid(1)
      ->setArguments($newsArgs) 
      ->uriFor('success');
    $this->redirectToUri($uri);
    

    【讨论】:

    • 好的,但是cHash参数不会出问题吗?
    • 不应该。 cHash 是根据所有参数计算得出的,因此您的插件和为新闻扩展添加的额外参数都是如此。
    【解决方案2】:

    作为@Rudy Gnodde 的补充回答:

    uriBuilder 有一个选项“addQueryString”,相当于typoscript 中的typolink 函数。如果启用此选项,它会将配置的查询字符串附加到 url。这样您就不需要为每个扩展处理每个参数:

    $uriBuilder = $this->getControllerContext()->getUriBuilder();
    $uri = $uriBuilder->reset()
      ->setAddQueryString(true)
      ->setAddQueryStringMethod('GET')
      ->uriFor('success');
    $this->redirectToUri($uri);
    

    对于 ViewHelper f:form 表单,您也应该添加选项 addQueryString="true"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-29
      • 2020-05-29
      • 1970-01-01
      • 2011-10-25
      • 2018-08-19
      • 2018-04-28
      • 1970-01-01
      • 2015-01-20
      相关资源
      最近更新 更多