Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter在form helper中引用MY_控制器_Php_Html_Forms_Codeigniter - Fatal编程技术网

Php Codeigniter在form helper中引用MY_控制器

Php Codeigniter在form helper中引用MY_控制器,php,html,forms,codeigniter,Php,Html,Forms,Codeigniter,如果我的_控制器中有一个处理表单的回调函数: class MY_Controller extends CI_Controller{ function login(){ $this->form_validation->set_rules('username', 'Username', 'required'); $this->form_validation->set_rules('password', 'Password', 'req

如果我的_控制器中有一个处理表单的回调函数:

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隐藏登录表单,因此将回调放在我的_控制器中似乎是最合乎逻辑的,我只是不确定如何使用form helper类访问它。有什么建议吗

添加两个库-

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

echo form_open('MY_Controller/login');

在视图中

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

您可以访问
myu控制器的
login()
功能

form_open('default_controller_name/login');

如果您的
默认\u控制器中没有
login()
函数

窗体打开(“我的\u控制器/登录”)
什么是您的
默认\u控制器
名称??非常好,我喜欢这样,因为使用我的\u控制器至少可以说不是很好的restful uri设计。这样,登录函数总是在上下文中,确切地说。
form_open('default_controller_name/login');