Codeigniter:将整个POST请求发送到另一个控制器的方法

时间:2015-08-15 07:55:21

标签: php codeigniter post parameters

我有一个通用控制器,它将获得POST请求并决定调用任何控制器的已知方法。控制器将根据要求选择。

此外,我需要向所选方法发送整个POST请求,而不会被篡改。

更多说明
controller 1中获取发布请求,处理请求并决定致电known_method() controller X | X != 1。还向该方法发送主要请求。例如。

public function index()
{
    $post = $this->input->post();

    //handling the request and decide to call the following method of another controller

    Controller_X->known_method($post);
    //OR
    redirect("site_url/controller_X/known_method/{$post}");
}  

但是因为发送$post作为它将发送为GET请求的参数,可能会篡改它的数据,这不实用。同样存储在session中并在目标方法中检索它不是一个好的解决方案。

问题:如何将此数据发送到我选择的目标?

提前致谢

2 个答案:

答案 0 :(得分:3)

你可以将控制器包含在控制器中

if(toIncludeController_a()){
      $this->load->library('../controllers/Controller_a');
      $this->controller_a->myFunction(); //<- this function can also get the post data using $this->input->post
}

contoller_a:

public function myFunction(){
     $data = $this->input->post();
}

答案 1 :(得分:1)

建议,我认为会更清洁:

1)让请求在库中处理,而不是控制器。相应地调用库。

if(request1) {
    $this->load->library('lib1');
    $this->lib1->handle(); // in lib1, retrieve all post without tampering
} else if(request2) {
    ...and so on
}

2)在客户端处理决策请求或js

重定向无法正常工作,因为数据会丢失或需要重新发布。

更新/评论:库不是精简版,也不是精简版,它最好被视为业务逻辑。操作或繁重的逻辑通常放在这里,模型交互也是如此。