Codeigniter - 在视图中设置变量

时间:2011-09-28 23:27:42

标签: codeigniter

我可以在视图文件中设置变量吗?

例如: 我有一个控制器:welcome.php 它的负载:

$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');

我需要在文件main.php上设置一个变量并获取footer.php

它可能吗?

4 个答案:

答案 0 :(得分:5)

您可以将变量从一个视图传递到另一个视图,就像从控制器到视图一样。您只需加载在使用该变量的视图之前设置该变量的视图文件:

$this->load->view('main'); //load before
$this->load->view('footer'); //load after

在main.php内部执行$this->load->vars(array('your_variable'=>'it's value'));,您可以像在任何其他变量中一样在页脚中调用它。唯一的要求是在footer.php之前加载main.php。

答案 1 :(得分:3)

无法在视图文件中设置变量并从另一个变量访问它。无论如何,您都没有理由在视图文件中设置变量。控制器应该处理所有应用程序逻辑,因此您应该在那里设置变量。我建议阅读用户指南或查看一些文章,以便更好地掌握MVC原则。

要在多个视图中访问同一个变量,请将其传递给您加载的每个视图。

// Set your variable
$data['variable'] = 'value';

// Pass variable to multiple views
$this->load->view('main', $data);
$this->load->view('footer', $data);

答案 2 :(得分:1)

您可以将数组对象传递给您的视图,例如:

$data = new StdClass;
$data->title = "The Title";
$data->content = "The Content";

$this->load->view('main', $data);

$data = new SomeClass;
$this->load->view('main', $data);

此外,在每个视图中,您都可以传递不同的数据:

$data1 = array("key" => "val");
$data2 = $this->some_class->some_method($params);
$data3 = $this->another_class->another_method($params);

$this->load->view('navigation', $data1);
$this->load->view('main', $data2);
$this->load->view('footer', $data3);

答案 3 :(得分:0)

是的,要从控制器传递变量,可以在视图名称后键入变量数据,这是示例:

$data["vehicle"] = $vehicle;
$this->load->view('header',$data);

然后在您的视图中仅调用变量的名称:

<td>
   <?php echo $vehicle ?>
</td>

希望它能提供帮助