Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3在PHP控制器中获取URL参数_Typo3_Url Parameters - Fatal编程技术网

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

TYPO3在PHP控制器中获取URL参数,typo3,url-parameters,Typo3,Url Parameters,如何在TYPO3中的PHP代码中获取url参数 我有这样的链接 <f:link.page pageUid="138" additionalParams="{myname: Lilly}">Click!</f:link.page> 点击! 页面上连接了一个控制器,现在如何将传递的参数值获取到控制器 我必须根据传递的参数渲染视图 编辑 我不知道如何解决这个问题 我有一个控制器,它有动作列表和显示。如果参数发送到显示操作为全部,则应显示所有项目,并且类似地,视图根据传递的参

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

我有这样的链接

<f:link.page pageUid="138" additionalParams="{myname: Lilly}">Click!</f:link.page>
点击!
页面上连接了一个控制器,现在如何将传递的参数值获取到控制器

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

编辑

我不知道如何解决这个问题

我有一个控制器,它有动作
列表
显示
。如果
参数
发送到
显示
操作为
全部
,则应显示所有项目,并且类似地,
视图
根据传递的参数进行更改

我的问题是:

  • 我如何传递参数以及如何在控制器中捕捉它们
  • 动作控制器的链接显示得很长,看起来很难看。如何自定义链接?是否有类似于
    routes
    的东西可以实现这一点

  • 要完全自动支持操作,您需要使用
    f:link.action
    viewhelper,但正如您所发现的,它会创建太长的参数集(包括控制器等)

    在这种情况下,最好的选择是
    f:link.page
    VH,但是您需要付出更多的努力来找到正确的操作

    您有几个选择:

    • 如果您想/可以在单独的页面上显示这些视图,只需创建两个FE插件,第一个插件将使用
      show
      action作为默认插件,第二个插件将使用
      list
      action。然后可以使用简化的参数
    • 使用打字脚本将插件放置在页面上,在这种情况下,您可以使用
      引导
      您的插件执行不同的默认操作,具体取决于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插件,第一个插件将使用
      show
      action作为默认插件,第二个插件将使用
      list
      action。然后可以使用简化的参数
    • 使用打字脚本将插件放置在页面上,在这种情况下,您可以使用
      引导
      您的插件执行不同的默认操作,具体取决于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中,我就在我的帖子中添加了一个示例。太棒了!你帮我节省了很多时间。谢谢:)这里有一个输入错误:结束标记应该是
    。是的。如果我想在屏幕上显示
    列表
    显示
    视图,您的解决方案将适用<