use*_*244 16 php oop codeigniter
我是Codeigniter和OOP PHP的新手.
控制器:
public function index(){
$this->load->model('main_model');
$planet = $this->main_model->solar();
$this->load->view('main_view', $planet);
}
Run Code Online (Sandbox Code Playgroud)
如果echo $planet在控制器中它执行它应该做的事情.如果我echo $planet在视图中得到一个未定义的变量错误. $planet不是数组.为什么不将$planet变量传递给视图?
我知道这是一个简单而基本的问题,我很尴尬,我无法弄清楚我做错了什么.
编辑:好的,经过更多的摆弄,我得到了它的工作.变量只有在格式化为数组时才能从Controller传递到View?
Mis*_*cha 27
您必须将数组传递给视图.CodeIgniter会自动$planet提供给您.
$data = array('planet' => $planet);
$this->load->view('main_view', $data);
Run Code Online (Sandbox Code Playgroud)
有了它,您可以$planet在视图中使用.
例如,如果您执行以下操作:
$data = array('foo' => 'Hello', 'bar' => 'world');
$this->load->view('main_view', $data);
Run Code Online (Sandbox Code Playgroud)
$foo并将$bar在您的视图中提供.数组中的键值对会自动转换为视图中的变量.
jle*_*eft 12
您可以将数组或对象传递给视图.然后,您可以在视图中将数组键作为变量访问.
排列
public function index()
{
$this->load->model('main_model');
$planet_data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $planet_data);
}
Run Code Online (Sandbox Code Playgroud)
宾语
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);
}
Run Code Online (Sandbox Code Playgroud)
从CodeIgniter的用户手册:注意:如果使用对象,类变量将转换为数组元素.
无论您如何传递数据,都可以显示如下:
<?php echo $planet; ?>
Run Code Online (Sandbox Code Playgroud)
如果它是一个数组,那么你需要迭代它.或者一个对象,然后访问它的成员变量.
根据我的经验,使用数组比使用对象更常见.
小智 6
这是如何轻松完成的
public function index() {
$this->load->model('main_model');
$data['planet'] = $this->main_model->solar();
$this->load->view('main_view', $data);
}
Run Code Online (Sandbox Code Playgroud)
现在在您的视图中,您可以通过这种方式访问该值
echo $planet;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73194 次 |
| 最近记录: |