Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
将数据从控制器传递到Codeigniter视图时出错_Codeigniter - Fatal编程技术网

将数据从控制器传递到Codeigniter视图时出错

将数据从控制器传递到Codeigniter视图时出错,codeigniter,Codeigniter,我面临一个有线问题超过2小时。我想不出来。我试图将变量“errors”从模型传递到视图,但当我尝试加载页面时,它显示错误,并显示“undefined variable:errors”。我正在尝试建立一个“注册”页面来注册新用户。 这是我的注册控制器 function register(){ if($_POST){ $config = array( array( 'field' => 'username',

我面临一个有线问题超过2小时。我想不出来。我试图将变量
“errors”
从模型传递到视图,但当我尝试加载页面时,它显示错误,并显示
“undefined variable:errors”
。我正在尝试建立一个“注册”页面来注册新用户。 这是我的注册控制器

function register(){
    if($_POST){
        $config = array(
            array(
                'field' => 'username',
                'label' => 'Username',
                'rules' => 'trim|required|min_length[3]|is_unique[users.username]'
            ),
            array(
                'field' => 'password',
                'label' => 'Password',
                'rules' => 'trim|required|min_length[5]'
            ),
            array(
                'field' => 'password2',
                'label' => 'Password Confirm',
                'rules' => 'trim|required|min_length[5]|matches[password]'
            ),
            array(
                'field' => 'user_type',
                'label' => 'User Type',
                'rules' => 'required'
            ),
            array(
                'field' => 'email',
                'label' => 'Email',
                'rules' => 'trim|required|is_unique[users.email]|valid_email'
            )
        );
        $this->load->library('form_validation');
        $this->form_validation->set_rules($config);
        if($this->form_validation->run() == FALSE){
            $data['errors'] = validation_errors();
        }else{
            $data_array = array(
                'username' => $_POST['username'],
                'password' => sha1($_POST['password']),
                'email' => $_POST['email'],
                'user_type' => $_POST['user_type']
            );
            $this->load->model('user');
            $userid = $this->user->create_user($data_array);
            $this->session->set_userdata('userID', $userid);
            $this->session->set_userdata('user_type',$_POST['user_type']);
            redirect(base_url().'index.php/posts');
        }
    }
    $this->load->helper('form');
    $this->load->view('header');
    $this->load->view('register_user');
    $this->load->view('footer');
}
在上面的示例中,当验证中出现错误时,我在$data['errors']数组中设置错误。 以下是观点

<h2>Register User</h2>
<?php if($errors): ?>
<div style="background:red;color:white;">
<?php echo $errors; ?>
</div>
<?php endif; ?>
注册用户

但当我在浏览器上打开register页面时,它会显示一个错误,上面写着
“Undefined variable:errors”
。有人能告诉我哪里做错了吗?

您没有向视图传递任何数据。您可以使用第二个参数将数据传递到视图,而不是这样做

$this->load->view('header');
$this->load->view('register_user');
$this->load->view('footer');
你想做什么

$aData['errors']
$this->load->view('header', $aData);
$this->load->view('register_user', $aData);
$this->load->view('footer', $aData);
然后,当你在你的视野中时,你可以做

<h2>Register User</h2>
<?php if($errors): ?>
    <div style="background:red;color:white;">
        <?php echo $errors; ?>
    </div>
<?php endif; ?>
注册用户

您需要将数组作为第二个参数传递给
$this->load->view
。CodeIgniter从该数组中获取密钥,并使它们成为视图文件中的变量。在尝试回显之前,请确保设置了
$errors
。或者您可以直接从视图中测试(validation_errors())