A view is everything a user can see of your website. They use a unified interface and can be modified as needed. One of the benefits of MVC is that you separate the presentation layer and the logic layer, so everything looks clean. A view is actually a set of HTML structures that contain your content. There are various elements in the structure, such as color, font, text layout, etc.; but the view does not care about these, all it has to do is to fetch the content and display it.
Generally we define it like this in the controller:
function index() { $data['mytitle'] = "A website monitoring tool"; $data['mytext'] = "This website helps you to keep track of the other websites you control."; $this->load->view('basic_view',$data); }
We use the $data array as the second parameter of $this->load->view(), after the view name. After the view receives the $data array, it uses the PHP function extract() to convert each element in the array into a memory variable. The key name of the array is the variable name, and the value is the value contained in the variable. The values of these variables can be directly referenced by the view:
<html> <head> </head> <body> <h1 class='test'><?php echo $mytitle; ?></h1> <p class='test'><?php echo $mytext; ?></p> </body> </html>
Although you can only pass one variable to the view, by creating an array, you can neatly pass a large number of variables into the view. It seems complicated, but is actually a compact and excellent way of transferring information.
If the passed array contains multiple data, then it needs to be traversed. The operation is generally as follows. First the controller:
$data["notice"] =array('aaa','bbb'); $this->load->view('api/notice',$data);
Parse in view:
<?php if(count($notice)>0){ foreach($notice as $key =>$value ){ ?> <a href="#"><?php echo $value?></a> <?php } ?>
Let’s talk about the transfer and traversal of two-dimensional arrays. The following program implements traversing files in a directory.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Data extends CI_Controller { public function index() { $this->load->helper('url'); $data['page_title'] = '帮客之家'; $data['pre_url'] = 'application/views/default/'; $this->load->view('default/header', $data); $this->load->view('default/index', $data); $this->load->view('default/footer'); //$this->load->view('index'); } public function gdnews() { $this->load->helper('url'); $arr = array(); function tree($directory) { $mydir = dir($directory); while($file = $mydir->read()) { // 是目录的话 if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!="..")) { //echo "<li><font color=\"#ff00cc\"><b>$file</b></font></li>\n"; //tree("$directory/$file"); } // 不是目录 else { $arr['name'][] = @iconv('GB2312','UTF-8',$file); $arr['time'][] = @iconv('GB2312','UTF-8',date('Y-m-d H:i:s', filemtime($file))); } } $mydir->close(); return $arr; } $dir = "datas/gdnews/"; $arr = tree($dir); $data['files'] = $arr; $data['page_title'] = '帮客之家' ; $data['dir'] = $dir; $this->load->view('default/header', $data); $this->load->view('default/data', $data); $this->load->view('default/footer'); } } ?>
Just output it like this in the view:
<?php if(count($files)>0) { foreach($files['name'] as $key =>$value ){ ?> <p class="postmetadata"> <span style="color:#333;"><?=$files['time'][$key]?></span> <?=$files['name'][$key]?> <span><a href="<?=base_url().$dir.$files['name'][$key]?>" target="_blank">查看</a> <a href="#">删除</a></span> </p> <?php } } ?>