Codeigniter引用表单助手中的MY_Controller

时间:2013-06-13 12:22:00

标签: php html forms codeigniter

如果我在MY_Controller中有一个处理表单的回调函数:

class MY_Controller extends CI_Controller{

    function login(){
        $this->form_validation->set_rules('username', 'Username', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');

        if ($this->form_validation->run() == true){
            //do something
        }
    }

}

我应该如何在视图中使用表单助手来引用它?

echo form_open('?/login');

这背后的原因是我们在头模板中有一个登录表单,它没有相应的控制器,它在每个视图之前加载。如果设置了会话数据,我们用JS隐藏登录表单,所以将回调放在MY_Controller中似乎最合乎逻辑,我只是​​不确定如何使用表单助手类访问它。有什么建议?

3 个答案:

答案 0 :(得分:2)

由于您将login()放在MY_Controller内并扩展CI_Controller,因此每个控制器都会获得该方法。然后,您可以使用$this->router->fetch_class();获取当前控制器的名称,并将其附加到/login之前。

实施例。

var $controller = $this->router->fetch_class();
echo form_open($controller.'/login');

答案 1 :(得分:0)

添加两个库 -

 $this->load->helper('form');
 $this->load->library('form_validation');
在控制器构造函数中

并添加此

echo form_open('MY_Controller/login');

在视图中

答案 2 :(得分:0)

您可以访问login()的{​​{1}}功能

MY_Controller

如果form_open('default_controller_name/login');

中没有login()功能