我有一个通用控制器,它将获得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
中并在目标方法中检索它不是一个好的解决方案。
问题:如何将此数据发送到我选择的目标?
提前致谢
答案 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
重定向无法正常工作,因为数据会丢失或需要重新发布。
更新/评论:库不是精简版,也不是精简版,它最好被视为业务逻辑。操作或繁重的逻辑通常放在这里,模型交互也是如此。