在线文档教程
Codeigniter 3

查看 | Views

意见

视图只是一个网页或页面片段,如页眉,页脚,侧边栏等。实际上,如果您需要此类视图,视图可以灵活地嵌入到其他视图(其他视图等内)中层次结构。

视图从未直接调用,必须由控制器请记住,在MVC框架中,Controller充当交通警察,因此它负责获取特定的视图。如果您没有阅读控制器页在继续之前应该这样做。

使用您在控制器页面中创建的示例控制器,让我们添加一个视图。

创建视图

使用文本编辑器,创建一个名为blogview.php的文件,并将其放入其中:

<html> <head> <title>My Blog</title> </head> <body> <h1>Welcome to my Blog!</h1> </body> </html>

然后将文件保存在申请/意见/目录。

加载视图

要加载特定的视图文件,您将使用以下方法:

$this->load->view('name'

其中名称是视图文件的名称。

那个。除非您使用的是.php以外的内容,否则不需要指定PHP文件扩展名。

现在,打开前面创建的名为Blog.php的控制器文件,用视图加载方法替换echo语句:

<?php class Blog extends CI_Controller { public function index() { $this->load->view('blogview' } }

如果您使用您之前所做的URL访问您的站点,您应该会看到您的新视图。URL类似于以下内容:

example.com/index.php/blog/

加载多个视图

CodeIgniter将智能地处理$this->load->view()来自控制器内的多个呼叫。如果发生多次呼叫,它们将被附加在一起。例如,您可能希望拥有标题视图,菜单视图,内容视图和页脚视图。这可能看起来像这样:

<?php class Page extends CI_Controller { public function index() { $data['page_title'] = 'Your title'; $this->load->view('header' $this->load->view('menu' $this->load->view('content', $data $this->load->view('footer' } }

在上面的示例中,我们使用的是“动态添加数据”,您将在下面看到这一点。

在子目录中存储视图

如果您喜欢这种类型的组织,也可以将视图文件存储在子目录中。这样做时,您将需要包含加载视图的目录名。例子:

$this->load->view('directory_name/file_name'

向视图添加动态数据

数据从控制器传递到视图。列阵或者对象在视图加载方法的第二个参数中。下面是一个使用数组的示例:

$data = array( 'title' => 'My Title', 'heading' => 'My Heading', 'message' => 'My Message' $this->load->view('blogview', $data

下面是一个使用对象的示例:

$data = new Someclass( $this->load->view('blogview', $data

如果使用对象,类变量将被转换为数组元素。

让我们用您的控制器文件试试。打开它,添加以下代码:

<?php class Blog extends CI_Controller { public function index() { $data['title'] = "My Real Title"; $data['heading'] = "My Real Heading"; $this->load->view('blogview', $data } }

现在打开视图文件并将文本更改为与数据中的数组键对应的变量:

<html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> </body> </html>

然后在您使用的URL加载页面,您应该会看到变量被替换。

创建循环

传递给视图文件的数据数组不限于简单变量。您可以传递多维数组,这些数组可以被循环以生成多个行。例如,如果您从数据库中提取数据,它通常以多维数组的形式出现。

下面是一个简单的例子。将此添加到控制器中:

<?php class Blog extends CI_Controller { public function index() { $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands' $data['title'] = "My Real Title"; $data['heading'] = "My Real Heading"; $this->load->view('blogview', $data } }

现在打开视图文件并创建一个循环:

<html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> <h3>My Todo List</h3> <ul> <?php foreach ($todo_list as $item):?> <li><?php echo $item;?></li> <?php endforeach;?> </ul> </body> </html>

你会注意到,在上面的例子中,我们使用PHP的替代语法。如果你不熟悉它,你可以在这里阅读。

将视图作为数据返回

有第三个可选参数可让您更改方法的行为,以便将数据作为字符串返回,而不是将其发送到浏览器。如果您想以某种方式处理数据,这可能很有用。如果将该参数设置为TRUE(布尔值),它将返回数据。默认行为是false,将其发送到您的浏览器。如果你想返回数据,记得把它分配给一个变量:

$string = $this->load->view('myfile', '', TRUE