如何在TYPO3中获取PHP代码中的url parameters
?
我有这样的链接
<f:link.page pageUid="138" additionalParams="{myname: Lilly}">Click!</f:link.page>
该页面附有一个控制器,现在我如何获取传递参数的值到我的控制器?
我必须根据传递的参数渲染Views
。
修改
我不确定如何解决这个问题。
我有一个控制器,其中包含list
和show
个动作。如果parameters
发送至show
操作为all
,则应显示所有项目,同样view
会根据传递的参数进行更改。
我的问题是:
routes
这样的东西可以实现这个目标?答案 0 :(得分:2)
您只需使用f:link.action
viewhelper即可。如果您处于列表操作中,您可以执行以下操作:
<f:link.action action="show" arguments="{myArgument: myArgument}">Link</f:link>
这应该将视图切换到show动作的视图。
如果您需要捕获其他参数,可以$this->request->getArguments()
获取所有参数,或$this->request->getArgument('myArgument')
获取控制器中的特定参数。请注意,这将仅包含使用f:link.action
viewhelper干净地发送的参数,因为这些参数的前缀是您正在使用的当前扩展/插件。
如果您使用RealURL,则可以提供配置,将您的网址重写为较短的网址。
编辑:
如果您的链接需要指向其他页面,则只需添加以下内容:
<f:link.action action="show" arguments="{myArgument: myArgument}" pageUid="myId">Link</f:link>
答案 1 :(得分:1)
对于动作的全自动支持,您需要使用f:link.action
viewhelper,但是当您发现时 - 它会创建太长的参数集(包括控制器等)。
在这种情况下,最好的选择是f:link.page
VH,但是你需要付出更多努力才能找到适当的行动。
您有几种选择:
show
操作作为默认操作,第二个 - list
操作。然后你可以使用简化的参数。bootstrap
插件使用不同的默认操作 - 具体取决于TS条件(如果参数x存在bootstrap with show,else with 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();
}
不要忘记验证使用_GP
提取的数据。
答案 2 :(得分:1)
如果您需要更高级的视图助手,还有VHS扩展 http://fedext.net/viewhelpers/vhs.html