在redirect() - Typo3中传递数据

时间:2016-07-11 04:22:56

标签: php model-view-controller typo3 extbase

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

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

是不是?

我的操作名称为'edit'但是它会重定向到'list'。请帮我解决此问题。

3 个答案:

答案 0 :(得分:6)

传递给redirect-target的参数必须以关联数组的形式给出。关键是参数名称(如在actions方法标题中,没有$),值是参数值。看起来像这样:

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

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

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