TYPO3在PHP控制器中获取URL参数
如何在TYPO3中的PHP代码中获取TYPO3在PHP控制器中获取URL参数,typo3,url-parameters,Typo3,Url Parameters,如何在TYPO3中的PHP代码中获取url参数 我有这样的链接 <f:link.page pageUid="138" additionalParams="{myname: Lilly}">Click!</f:link.page> 点击! 页面上连接了一个控制器,现在如何将传递的参数值获取到控制器 我必须根据传递的参数渲染视图 编辑 我不知道如何解决这个问题 我有一个控制器,它有动作列表和显示。如果参数发送到显示操作为全部,则应显示所有项目,并且类似地,视图根据传递的参
url参数
我有这样的链接
<f:link.page pageUid="138" additionalParams="{myname: Lilly}">Click!</f:link.page>
点击!
页面上连接了一个控制器,现在如何将传递的参数值获取到控制器
我必须根据传递的参数渲染视图
编辑
我不知道如何解决这个问题
我有一个控制器,它有动作列表
和显示
。如果参数
发送到显示
操作为全部
,则应显示所有项目,并且类似地,视图
根据传递的参数进行更改
我的问题是:
routes
的东西可以实现这一点要完全自动支持操作,您需要使用
f:link.action
viewhelper,但正如您所发现的,它会创建太长的参数集(包括控制器等)
在这种情况下,最好的选择是f:link.page
VH,但是您需要付出更多的努力来找到正确的操作
您有几个选择:
- 如果您想/可以在单独的页面上显示这些视图,只需创建两个FE插件,第一个插件将使用
action作为默认插件,第二个插件将使用show
action。然后可以使用简化的参数list
- 使用打字脚本将插件放置在页面上,在这种情况下,您可以使用
您的插件执行不同的默认操作,具体取决于TS条件(如果参数x存在,则使用show引导,否则使用list引导)引导
- 对两个视图使用一个操作,并渲染一个独立视图:
public function show2Action() { $view = t3lib_div::makeInstance('Tx_Fluid_View_StandaloneView'); if (t3lib_div::_GP('myname') == 'Lilly') { $view->setTemplatePathAndFilename(t3lib_extMgm::extPath('yourext') . '/Resources/Private/Templates/Some/Show.html'); $view->assign('message', 'Hello ' . t3lib_div::_GP('myname')); } else { $view->setTemplatePathAndFilename(t3lib_extMgm::extPath('yourext') . '/Resources/Private/Templates/Some/List.html'); $view->assign('message', 'Enter your name'); } return $view->render(); }
不要忘记验证用
\u GP
获取的数据,以便完全自动支持需要使用f:link.action
viewhelper的操作。但是,正如您发现的那样,它会创建太长的参数集(包括控制器等)
在这种情况下,最好的选择是f:link.page
VH,但是您需要付出更多的努力来找到正确的操作
您有几个选择:
- 如果您想/可以在单独的页面上显示这些视图,只需创建两个FE插件,第一个插件将使用
action作为默认插件,第二个插件将使用show
action。然后可以使用简化的参数list
- 使用打字脚本将插件放置在页面上,在这种情况下,您可以使用
您的插件执行不同的默认操作,具体取决于TS条件(如果参数x存在,则使用show引导,否则使用list引导)引导
- 对两个视图使用一个操作,并渲染一个独立视图:
public function show2Action() { $view = t3lib_div::makeInstance('Tx_Fluid_View_StandaloneView'); if (t3lib_div::_GP('myname') == 'Lilly') { $view->setTemplatePathAndFilename(t3lib_extMgm::extPath('yourext') . '/Resources/Private/Templates/Some/Show.html'); $view->assign('message', 'Hello ' . t3lib_div::_GP('myname')); } else { $view->setTemplatePathAndFilename(t3lib_extMgm::extPath('yourext') . '/Resources/Private/Templates/Some/List.html'); $view->assign('message', 'Enter your name'); } return $view->render(); }
不要忘记验证通过
\u GP
获取的数据,您只需使用f:link.action
viewhelper即可。如果您正在执行列表操作,您可以执行以下操作:
<f:link.action action="show" arguments="{myArgument: myArgument}">Link</f:link>
您只需使用
f:link.action
viewhelper。如果您正在执行列表操作,您可以执行以下操作:
<f:link.action action="show" arguments="{myArgument: myArgument}">Link</f:link>
如果您需要更多高级视图助手,还可以使用VHS扩展
如果您需要更多高级视图助手,还有VHS扩展
为什么要在“显示”操作中显示所有项目?列表操作不应该这样做吗?另外,我是否理解您的插件被插入多个页面(一个页面用于列表视图,另一个页面用于显示视图)?你使用两个插件,还是一个?我只使用一个插件,但不同的操作来呈现不同类型的视图。在“我的应用程序”中,“列表”操作显示有限制的项目,“我的显示”显示没有任何限制且具有不同设计的所有项目。为什么要显示“显示”操作上的所有项目?列表操作不应该这样做吗?另外,我是否理解您的插件被插入多个页面(一个页面用于列表视图,另一个页面用于显示视图)?你使用两个插件,还是一个?我只使用一个插件,但不同的操作来呈现不同类型的视图。在我的应用程序中,“列表”操作显示有限制的项目,“我的显示”显示所有没有任何限制且具有不同设计的项目!这是一个很好的方法。但是,在控制器中,我们可以使用
$this->request->getArgument('show'),而不是使用t3lib\u div
代码>。但问题是,我如何检查参数show
是否已设置?不,您不能:参数取自完整的参数名tx\u something[somether]=foo-而不是您要求的单个GET参数:?name=Lilly,同时使用link.page
而不是link.action
您需要使用\u GP
太好了!这是一个很好的方法。但是,在控制器中,我们可以使用$this->request->getArgument('show'),而不是使用t3lib\u div
代码>。但问题是,我如何检查参数show
是否已设置?不,您不能:参数取自完整的参数名tx\u something[somether]=foo-而不是您要求的单个GET参数:?name=Lilly,同时使用link.page
而不是link.action
您需要使用\u GP
是。如果我想在同一页面上显示列表
和显示
视图,您的解决方案将适用。但在我的例子中,列表
视图显示在一个uid为77的页面上,而显示
视图显示在另一个uid为87的页面上。只需将“pageUid”添加到链接viewhelper中,我就在我的帖子中添加了一个示例。太棒了!你帮我节省了很多时间。谢谢:)这里有一个输入错误:结束标记应该是
。是的。如果我想在屏幕上显示列表
和显示
视图,您的解决方案将适用<