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> </label>
<input type="submit" name="Wyslij" value="Wyslij" disabled="disabled"/>
<label> </label>
<legend>
<<?php echo $heading;?>
</legend>
</form>
我有错误:
严重性:通知
消息:未定义变量:数据
文件名:register/register_open.php
行号:9
这一行->$this->load->view('register/register_view',$data);
严重性:通知
消息:未定义变量:标题
文件名:register/register_view.php
行号:48
这一行-><<?php echo $heading;?>
如何将数据传递到另一个视图?
【问题讨论】:
首先要改变的是类名在声明中的第一个字母大写。它应该是:类验证注册扩展 CI_Controller 【参考方案1】:在你的控制器中,改变
$this->load->view('register/register_open',$data)
到
$this->load->view('register/register_open',array('data' => $data));
当您执行$this->load->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()的变量数未定义