CodeIgniter,消息:未定义的变量,传递数据

Posted

技术标签:

【中文标题】CodeIgniter,消息:未定义的变量,传递数据【英文标题】:CodeIgniter, Message: Undefined variable, Passing data 【发布时间】:2012-10-25 22:20:08 【问题描述】:

>> 我的控制器 - 验证注册

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class verifyregistration extends CI_Controller 

function __construct()

    parent::__construct();
    $this->load->model('users_model','',TRUE);
    $this->load->library('email');


function index()

    //This method will have the credentials validation
    $this->load->library('form_validation');

    $this->form_validation->set_rules('Login', 'Login', 'trim|required|xss_clean|callback_check_database|min_length[6]|strtolower|callback_username_not_exists');
    $this->form_validation->set_rules('Haslo', 'Haslo', 'trim|required|xss_clean|min_length[6]');
    $this->form_validation->set_rules('Powtorz_Haslo', 'Powtorz haslo', 'trim|required|xss_clean|matches[Haslo]|min_length[6]');
    $this->form_validation->set_rules('Imie', 'Imie', 'trim|required|xss_clean|min_length[2]');
    $this->form_validation->set_rules('Nazwisko', 'Nazwisko', 'trim|required|xss_clean');
    $this->form_validation->set_rules('Email', 'Email', 'trim|required|xss_clean|valid_email|min_length[6]');
    $this->form_validation->set_rules('Data_urodzenia', 'Data urodzenia', 'trim|required|xss_clean');
    $this->form_validation->set_rules('Telefon', 'Telefon', 'trim|required|xss_clean|min_length[8]');
    $this->form_validation->set_rules('Miasto', 'Miasto', 'trim|required|xss_clean');
    $this->form_validation->set_rules('Ulica', 'Ulica', 'trim|required|xss_clean|min_length[6]');
    $this->form_validation->set_rules('Kod_pocztowy', 'Kod pocztowy', 'trim|required|xss_clean');
    $this->form_validation->set_error_delimiters('<span style="color: red; font-size:    12px; ; line-height: 14px; ">', '</span>');
    $this->form_validation->set_error_delimiters('<li>', '</li>');
    $data['heading'] = "My Real Heading";  

    if($this->form_validation->run() == FALSE)
    
        $this->load->view('register/register_open',$data);
    
    else
    
        return false;  //this is not important
    

>> 我的视图打开 - register_open

<?php
$this->load->view('mains/header'); 
$this->load->view('login/loggin');
$this->load->view('mains/menu');
$this->load->view('left_column/left_column_before');
$this->load->view('left_column/menu_left');
$this->load->view('left_column/left_column');
$this->load->view('center/center_column_before');
$this->load->view('register/register_view',$data);
$this->load->view('center/center_column');
$this->load->view('right_column/right_column_before');
$this->load->view('right_column/right_column');
$this->load->view('mains/footer');
?>

>>我的观点 - register_view

<?php echo form_open('verifyregistration/index'); ?>
    <form>
        <label for="username">Login:</label>
        <input type="text" size="25" id="Login" name="Login" set_value='Login' /> 
        .
        .
        .

        <legend>
            <input type="checkbox" id="regulamin" name="Regulamin" onclick="this.form.elements['Wyslij'].disabled = !this.checked" /> 
            Akceptuję regulamin serwisu. </legend>

            <label>&nbsp;</label>
            <input type="submit" name="Wyslij" value="Wyslij" disabled="disabled"/>
            <label>&nbsp;</label>

        <legend>
            <<?php echo $heading;?>
        </legend>
    </form>

我有错误:

严重性:通知 消息:未定义变量:数据 文件名:register/register_open.php 行号:9 这一行->$this-&gt;load-&gt;view('register/register_view',$data);

严重性:通知 消息:未定义变量:标题 文件名:register/register_view.php 行号:48 这一行->&lt;&lt;?php echo $heading;?&gt;

如何将数据传递到另一个视图?

【问题讨论】:

首先要改变的是类名在声明中的第一个字母大写。它应该是:类验证注册扩展 CI_Controller 【参考方案1】:

在你的控制器中,改变

$this->load->view('register/register_open',$data)

$this->load->view('register/register_open',array('data' => $data));

当您执行$this-&gt;load-&gt;view('view', $variable) 时,它需要$variable 并使用php 函数extract() 将数组键转换为变量。所以,如果你想在嵌套视图中使用变量$data,你必须像我上面那样发送另一个数组。

【讨论】:

当我将控制器中的这一行更改为: $this->load->view('register/register_open',array('data' => $data)); 错误仍然存​​在也一样。 它应该可以工作,但要测试,请执行以下操作:在您的 register_open 视图中,放入 die(var_dump($data));作为第一行,看看它输出了什么。 当我添加这一行时,我有这个错误:遇到了一个 PHP 错误Severity: Notice Message: Undefined variable: data Filename: register/register_open.php Line Number: 2 我添加了:die(var_dump($data)); 因此,$data 没有传递到该视图。如果你传递一个以“数据”为键的数组,它应该可以工作...... 我刚刚在我的本地 CI 副本上对其进行了测试,它确实有效。您使用的是哪个版本的 CI?

以上是关于CodeIgniter,消息:未定义的变量,传递数据的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 数据没有从控制器传递到视图 [重复]

无法将变量从控制器传递到模型以处理codeigniter中的多个上载字段

PHP编写的语句-传递给bindu result()的变量数未定义

Codeigniter:将数据从控制器传递到视图

在 codeigniter 的控制器中加载模型时出错消息:未定义的属性:Cart::$load

codeigniter 返回“消息:未定义的属性:Welcome::$load”试图加载帮助程序库