【问题标题】:CakePHP: Flexible redirection for views and controllersCakePHP:视图和控制器的灵活重定向
【发布时间】:2014-12-02 06:56:46
【问题描述】:

我有从不同视图调用的视图。可以从客户列表、客户搜索、订单内等调用客户编辑视图。其中一些视图是简单视图,其他包含用于添加、编辑或删除数据的表单。在用户在该表单上完成他必须做的事情后,他应该被重定向到调用表单或另一个表单。

使用$this->referer() 不起作用,因为某些导航必须像这样:

列出订单 --> 编辑订单 --> 删除订单 --> 列出订单。

我可以为每个调用定义重定向,因此我尝试使用查询字符串并将?redirectTarget=<wherever> 添加到每个链接或重定向。为此,我制作了一个控制器功能

在 AppController.php 中

public function getRedirectTarget() {
    if ($this->request->query('redirectTarget')) {
        return $this->request->query('redirectTarget');
    } else {
        return array(
            'controller' => 'pages',
            'action' => 'home'
        );
    }
}

这适用于表单,因为我可以在我的控制器中使用getRedirectTarget(),但我无法从视图中访问该函数来构建链接。 (至少我不应该这样做 Can you call a controller function from a view in CakePHP? )在顶部的示例中,我必须将订单列表中的信息传递到编辑视图以构建链接以及表单操作的底层控制器。

现在我有不同的方法,但没有一个我真的很开心。我不知道该走哪条路。

  • CakePhp 中有什么我还没有找到吗?
  • 使用 $this->requestAction?
  • 将所有内容更改为表单和按钮并在控制器中执行所有重定向?
  • 有没有办法为每个视图创建一个变量?

在我看来这是一个常见的要求,而且我对 CakePHP 还很陌生,所以我正在征求你的建议。

【问题讨论】:

    标签: cakephp cakephp-2.0


    【解决方案1】:

    使用requestAction 应该是最好的方法。

    在视图中,你可以有类似的东西

    $redirect = $this->requestAction('/mycontroller/requestAction');
    $url = $this->Html->link('Continue', $redirect));
    

    【讨论】:

    • 谢谢,这对我有用。不能说性能,因为这是一个非常小的应用程序。
    猜你喜欢
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多