TYPO3在PHP控制器中获取URL参数

时间:2013-06-04 07:17:18

标签: typo3 url-parameters

如何在TYPO3中获取PHP代码中的url parameters

我有这样的链接

<f:link.page pageUid="138" additionalParams="{myname: Lilly}">Click!</f:link.page>

该页面附有一个控制器,现在我如何获取传递参数的值到我的控制器?

我必须根据传递的参数渲染Views

修改

我不确定如何解决这个问题。

我有一个控制器,其中包含listshow个动作。如果parameters发送至show操作为all,则应显示所有项目,同样view会根据传递的参数进行更改。

我的问题是:

  1. 如何传递参数以及如何在Controller中捕获它们?
  2. 动作控制器的链接显示很长,看起来非常难看。如何自定义链接?是否有routes这样的东西可以实现这个目标?

3 个答案:

答案 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,但是你需要付出更多努力才能找到适当的行动。

您有几种选择:

  • 如果您希望/可以在不同的页面上显示这些视图,只需创建两个FE插件,首先使用show操作作为默认操作,第二个 - list操作。然后你可以使用简化的参数。
  • 使用TypoScript在页面上放置插件,在这种情况下,您可以使用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

相关问题