构造函数中的CodeIgniter变量


CodeIgniter variables in constructor


我查了一下周围的话题,但没有发现适合我的情况
因此,我有一个充满方法的控制器,以及一个加载我通常在这个特定控制器中使用的模型的构造器。一切都很好。我需要在构造函数中设置一个数组,比如

$data["content"]["something"] = "bla bla";

仅此而已。因此,我将$data["content"]传递给视图加载程序,并希望能够访问

$something

,但不是。它将其作为未定义的变量,但为什么?当我把它放在特定的方法中时,一切都很好,但当它在构造函数中时,它说未定义。有什么想法吗?谢谢!:(

您不能在View中访问构造函数变量。您需要将其传递给控制器的方法,然后将其传递到视图。例如,

在构造函数中:

$data["content"]["something"] = "bla bla";

在控制器的方法中:

$data['something'] = $this->$data["content"]["something"];

现在您可以像传递echo $something一样传递$data进行查看和访问;

您似乎不了解这个问题的变量范围。与其创建局部变量$data,不如尝试使用整个对象(控制器(可用的$this->数据

function __construct() {
    ...
    $this->data['content'] = array('test' => 'test');
    ...
}

然后,您也可以使用变量$this->data将其传递给视图,并在执行过程中随时附加/修改它。

$this->load->view('path/to/view', $this->data);
  $data["content"]["something"] = "bla bla";
  $this->load->view('path/to/view', $data);

像这样在视图中检索

   echo $content["something"];

您必须执行以下操作:

$data["content"] = "bla bla";
$data["something"] = "bla bla";
$this->load->view('path/to/view', $data);

这样,您的视图中就有了所有的数据字符串。

<?php echo $something; ?>
<?php echo $content; ?>

在一个$data字符串中传递两个变量不是一个好主意。