【发布时间】:2019-05-29 07:29:39
【问题描述】:
我使用新闻插件添加另一个插件(我们称之为“表单”)作为详细视图的 CE。
当我在详细信息视图中填写表单并提交时,我的控制器内的重定向仅传递我的扩展的参数。
$this->redirect('success');
但我希望他也传递新闻扩展的参数,以便我进入新闻的详细信息视图,并且我的表单插件从重定向中获取他的其他操作信息。
但据我所知,redirect 方法只接受一个插件的参数。
有人有想法吗?
【问题讨论】:
我使用新闻插件添加另一个插件(我们称之为“表单”)作为详细视图的 CE。
当我在详细信息视图中填写表单并提交时,我的控制器内的重定向仅传递我的扩展的参数。
$this->redirect('success');
但我希望他也传递新闻扩展的参数,以便我进入新闻的详细信息视图,并且我的表单插件从重定向中获取他的其他操作信息。
但据我所知,redirect 方法只接受一个插件的参数。
有人有想法吗?
【问题讨论】:
redirect 函数只允许您重定向到的控制器/动作的参数。没有办法添加其他get参数。
唯一的方法是自己创建 URL 并使用 redirectToUri 函数。这将使其类似于:
$uriBuilder = $this->getControllerContext()->getUriBuilder();
$uri = $uriBuilder->reset()
->setTargetPageUid(1)
->setArguments($newsArgs)
->uriFor('success');
$this->redirectToUri($uri);
【讨论】:
作为@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"!
【讨论】: