Codeigniter:未加载辅助函数

时间:2016-11-24 07:33:17

标签: php codeigniter

我创建了一个表单,并且在我提交时没有在字段中输入数据,它在空白页面上重定向,而不是在我的控制器中加载表单助手后用form_open()打开的页面。事实上我无法使用url helper的功能。我已经以另一种方式发布了这个问题,但没有得到任何解决方案。我已尝试使用codeigniter文档中的以下代码,但它不适用于我。

为什么会这样。请帮我解决一下。

控制器:

class Login extends CI_Controller{
    function index()
    {
    $this->load->helper(array('form', 'url'));

    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'Username', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');
    $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
    $this->form_validation->set_rules('email', 'Email', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('login_form');
    }
    else
    {
        $this->load->view('success');
    }
}
}   

login_form视图:

<html>
<head>
<title>My Form</title>
</head>
<body>

<?php echo validation_errors(); ?>

<?php echo form_open('login'); ?>

<h5>Username</h5>
<input type="text" name="username" value="" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="" size="50" />

<h5>Password Confirm</h5>
<input type="text" name="passconf" value="" size="50" />

<h5>Email Address</h5>
<input type="text" name="email" value="" size="50" />

<div><input type="submit" value="Submit" /></div>

</form>

</body>
</html>

成功观点:

<html>
<head>
<title>My Form</title>
</head>
<body>

<h3>Your form was successfully submitted!</h3>

<p><?php echo anchor('form', 'Try it again!'); ?></p>

</body>
</html>

提前致谢...

6 个答案:

答案 0 :(得分:0)

$ this-&gt; load-&gt; helper('form','url'); 而不是$this->load->helper(array('form', 'url')); 应该工作正常。

编辑:不确定问题是什么,但您是否尝试在/application/config/autoload.php内加载帮助程序?

$autoload['helper'] = array('form', 'url');

答案 1 :(得分:0)

您配置.htaccess文件时,您的代码似乎是正确的。因为我尝试了你的代码所有工作正常。当我提交空白表单时,它给出验证错误。

.htaccess文件的

代码

    DirectoryIndex index.php
    RewriteEngine on
    RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]

答案 2 :(得分:0)

您是否在parent::__construct()中添加了__construct()

    class Login extends CI_Controller{
        public function __construct()
        {   
            parent::__construct();
            $this->load->helper(array('form', 'url'));
        }  
        ....

答案 3 :(得分:0)

login控制器中:

<?php
class Login extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
    }

    public function index() {
        $data = array();
        $data['title'] = 'Login Form';
        $this->load->view('login_form', $data);
    }

    public function save() {     
        $this->load->library('form_validation');
        $this->form_validation->set_rules('username', 'Username', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
        $this->form_validation->set_rules('email', 'Email', 'required');

        if ($this->form_validation->run() != FALSE)
        {
            redirect('login/success');
        }
        else
        {
            $this->index();
        }
    }

    public function success() {
        $data = array();
        $data['title'] = 'Successfully Submitted';
        $this->load->view('success_view', $data);
    }
}
?>

在登录视图页面中更改表单操作

<?php echo form_open('login/save'); ?>

<form method="post" action="<?php echo base_url(); ?>login/save">

注意:您可以在浏览器中运行登录表单,例如http://localhost/project_folder/login/

答案 4 :(得分:0)

可以尝试创建构造类

  

确保文件名为Login.php 仅限第一个字母是所有方式   案例codeigniter ucfirst有时会导致问题,如果没有像here

那样
class Login extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->library('form_validation');
    }

    function index() {

        $this->form_validation->set_rules('username', 'Username', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
        $this->form_validation->set_rules('email', 'Email', 'required');

        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('login_form');
        }
        else
        {
            $this->load->view('success');
        }
    }
}   

答案 5 :(得分:0)

尝试添加此

parent::__construct();

到你的构造函数,所以

function __construct(){
    parent::__construct();
}