从控制器传递变量,以查看在笨(Passing variable from controller to

2019-06-27 21:39发布

我是新来的笨和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