我可以在视图文件中设置变量吗?Codeigniter - 在视图中设置变量
的为例: 我有一个控制器:的welcome.php 其负载:
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');
我需要设置一个变量上的文件main.php,并获得footer.php
它的可能吗?
我可以在视图文件中设置变量吗?Codeigniter - 在视图中设置变量
的为例: 我有一个控制器:的welcome.php 其负载:
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');
我需要设置一个变量上的文件main.php,并获得footer.php
它的可能吗?
无法在视图文件中设置变量并从另一个视图文件访问变量。没有理由你应该在你的视图文件中设置变量。控制器应该处理所有的应用程序逻辑,所以你应该在那里设置变量。我会建议阅读用户指南或阅读一些文章以更好地理解MVC原则。
要访问多个视图中的相同变量,请将其传递给您加载的每个视图。
// Set your variable
$data['variable'] = 'value';
// Pass variable to multiple views
$this->load->view('main', $data);
$this->load->view('footer', $data);
你可以在一个视图中设置一个变量,并在另一个视图中使用它。我一直这样做。我在下面发布了我的答案。 –
这并不总是关于模型相关的变量,是古典的。例如,我使用它来设置“内容”视图中某些javascript的名称,然后在所有HTML内容之后将这些文件加载到页脚视图中。 –
您可以通过这两个阵列或对象到您的视图,例如:
$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);
您可以像从控制器到视图一样将变量从一个视图传递到另一个视图。你只需要加载设置一个变量,使用视图前视图文件变量:
$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。
在视图内部设置变量并不是一个好习惯。如果你打算使用这种方法,最好从控制器调用'$ this-> load-> vars()'而不是视图,这样你就不用担心你的顺序了加载视图。 – birderic
@birderic绝对。我只是在极端情况下这样做。但问题不在于最佳实践,而在于如何从视图加载变量。 –
你的意思是你想在视图中设置一个变量以备后用?因为,当然,您可以使用标准PHP在HTML中设置变量:'<?php $ some_variable ='某个值'; ?>'。 – Alex