我可以在视图文件中设置变量吗?
例如: 我有一个控制器:welcome.php 它的负载:
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');
我需要在文件main.php上设置一个变量并获取footer.php
它可能吗?
答案 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>
希望它能提供帮助