【问题标题】:Pass data in redirect() - Typo3在 redirect() 中传递数据 - Typo3
【发布时间】:2016-07-11 04:22:56
【问题描述】:

验证后我有一个表单,如果发生任何错误,页面将重定向到编辑本身并显示错误消息。如何在typo3中通过redirect()传递以前的数据和错误消息?

$this->redirect($action_name,$controllername, $extensionName, array('data',$data));

对吗?

我的动作名称是'edit',但它被重定向到'list'。请帮我解决这个问题。

【问题讨论】:

  • 只是为了确定一下,您将 $action_name 设置为“编辑”什么?问题可能是无法解析操作名称,然后调用默认操作。 listAction 是您的默认操作吗?

标签: php model-view-controller typo3 extbase


【解决方案1】:

传递给重定向目标的参数必须以关联数组的形式给出。键是参数名称(如在操作方法头中,没有$),值是参数值。看起来像这样:

$this->redirect(
    $action_name,
    $controllername,
    $extensionName,
    [
        'data' => $data
    ]
);

$data 在 URL 中的编码方式取决于其类型。持久对象被编码为它们的 ID,标量被编码为简单的字符串。它们如何到达其他操作取决于该操作的类型提示和@param 注释。

要重定向到同一个控制器或扩展,您可以将$controllerName$extensionName 传递为null

【讨论】:

  • 你也可以传递对象本身而不仅仅是 Uid。
  • +1 @Jost 和你可以传递的另一个参数是你的 FE 插件配置的 pageUid: $this->redirect($action_name,$controllername,$extensionName,array('data'=>'参数'),$pageUid);
【解决方案2】:

参数作为带有键值对的数组传递,其中键是参数名称。这假定您的目标操作有一个名为“数据”的参数。 $this->redirect($action_name,$controllername, $extensionName, array('data' =>$data));

【讨论】:

    【解决方案3】:

    Jost 的回答足以回答您的问题,但如果您想了解更多:

    1. 你的控制器动作应该是editAction()
    2. 您应该在 ext_localconf.php 中注册您的操作/控制器
    3. 您必须在插件 Flexform 配置中允许您的操作 [如果有更多操作或 switchableControllerActions]
    4. 清除安装工具缓存有时会创建 magik ;)

    参考:extBase Fluid Book

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多