查看 | 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