我是新来的笨和OOP PHP。
控制器:
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
如果echo $planet
控制器它做什么它应该做的。 如果我echo $planet
在视图中我得到一个未定义的变量错误。 $planet
不是数组。 为什么不是$planet
变量被传递到视图?
我知道这是一个简单和基本的问题,我很尴尬,我想不出我做错了什么。
编辑:好的,经过摆弄周围,我得到它的工作。 可变量只能从控制器传递时,他们格式化为一个数组来查看?
Answer 1:
你必须通过一个数组的视图。 笨自动使$planet
提供给您。
$data = array('planet' => $planet);
$this->load->view('main_view', $data);
有了这个,你可以使用$planet
在你的视图。
例如,如果你做到以下几点:
$data = array('foo' => 'Hello', 'bar' => 'world');
$this->load->view('main_view', $data);
$foo
和$bar
将提供你的看法。 在阵列中的键 - 值对在视图中自动转换为变量。
Answer 2:
可以通过其中一个阵列或将对象视图。 然后,您可以访问阵列键(S)为您的视图中的变量(一个或多个)。
调节器
排列
public function index()
{
$this->load->model('main_model');
$planet_data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet_data);
}
宾语
public function index()
{
$this->load->model('main_model');
$planet_data = new stdClass(); //Creates a new empty object
$planet_data->planet = $this->main_model->solar();
$this->load->view('main_view', $planet_data);
}
从CodeIgniter的用户手册 : 注:如果您使用对象,类变量会变成数组元素。
视图
不管你如何传递数据,它可以显示如下:
<?php echo $planet; ?>
如果它是一个数组,那么你就需要来遍历它。 或对象,然后访问它的成员变量。
在使用数组我的经验比使用对象更常见。
Answer 3:
这是如何轻松做
public function index() {
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
现在,在你看来,你可以访问值这样
echo $planet;
Answer 4:
尝试这样的:
public function index(){
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
在你看来,你可以访问“$星球”。那的it.accept的答案,如果它是有用的
Answer 5:
您可以在URL传递变量
function regresion($value) {
$data['value'] = $value;
$this -> load -> view('cms/template', $data);
}
在视图
<?php print_r($value);?>
Answer 6:
如果modal包含阵列响应:
public function solar() {
$data['earth'] = 'Earth';
$data['venus'] = 'Venus';
return $data;
}
那么你的数据来查看是这样的:
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
但在视图中,您将有这样的访问数据:
echo $earth;
echo $venus;
如果你不知道要响应会再使用这样的代码:
public function index(){
$this->load->model('main_model');
$planet['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
在查看文件,你可以访问这样的数据:
print_r($planet);
如果你不知道什么数据将进入视野,然后只使用在查看这些代码:
print_r($this->_ci_cached_vars);
Answer 7:
鉴于我们通过阵列和阵列的关键将自动成为变量,将作出由笨提供给您,我们不能简单地传递变量来查看我们需要传递数组
下面是你的代码
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar(); // <--- Change this line
$this->load->view('main_view', $planet);
}
简单地将其更改为
public function index(){
$this->load->model('main_model');
$data['planet']= $this->main_model->solar(); // <--- to this
$this->load->view('main_view', $data);
}
在你看来,你可以简单的访问它像这样
echo $planet;
文章来源: Passing variable from controller to view in CodeIgniter