我是codeigniter的新手,有个问题是否可以使用相同的Url模式访问Controller上的两个不同方法?区别在于访问这些方法的方法是GET或POST,就像Spring MVC处理一样
@RequestMapping(value = "/persons/add", method = RequestMethod.GET)
public String getAdd(Model model)
@RequestMapping(value = "/persons/add", method = RequestMethod.POST)
public String add(@ModelAttribute("personAttribute") Person person)
我想要的是,当我访问www.bla.com/controller/AddFunction这样的url时(这是GET),将触发的方法是"add1"方法,它将加载视图表单,然后我有一个对controller/Add Function有"操作"的表单,此时因为是POST,它将触发"add2"方法
事先感谢
您不需要在函数调用中传递REST方法的名称。控制器本身可以处理来自GET、POST或两者的输入。
示例:
class Persons extends Controller{
function add(){
//$p will contain post data.
$p = $this->input->post();
//$g will contain get data.
$g = $this->input->get();
//$b will contain get or post data, depending on which is submitted.
$b = $this->input->get_post();
}
}
有关进一步的解释,请参阅CodeIgniter关于输入类的文档
class Persons extends Controller{
function add(){
$postArray = $this->input->post();
$getArray = $this->input->get();
//if something was POSTed
if($postArray){
//do something with post array
return; //early return
}
//if we need to GET
if($getArray){
//do something with get array
return; //early return
}
//do something down here if there were no data passed, like a default view
//get() and post() return false if you have no parameters sent
}
}