CI框架传递数组到视图View层

如何解析控制器传过来的数组
服务器君一共花费了734.683 ms进行了5次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

视图是用户用户能看到你的网站的所有。 他们使用一个统一的接口, 而且可以根据需要进行修改。 MVC 的好处之一是你分开了表示层和逻辑层, 一切都显得很干净。视图实际上是一组包含有你的内容的HTML结构。结构中有各种元素,如颜色,字体,文字布局等; 不过视图不关心这些,它要做的只是取来内容,显示出来。

一般我们在控制器中这样定义:

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);
}

我们把$data数组作为$this->load->view()的第二个叁数,在视图名称之后。视图接收到$data数组后,使用PHP函数extract()把数组中的每个元素转换成内存变量,数组的键名即为变量名,值为变量内所包含的值。这些变量的值能直接被视图引用:

<html>
<head>
</head>
<body>
  <h1 class='test'><?php echo $mytitle; ?></h1>
  <p class='test'><?php echo $mytext; ?></p>
</body>
</html>

虽然你只能传送一个变量到视图, 但是通过建立数组,你能把大量变量整洁地传入视图。它似乎复杂, 但是实际上是一种紧凑和优秀的信息传输方式。

如果传递过来的数组是包含多个数据,那么就需要遍历,操作一般如下。先是控制器:

	$data["notice"] =array('aaa','bbb');
	 $this->load->view('api/notice',$data);

视图中解析:

<?php
	if(count($notice)>0){
        foreach($notice as $key =>$value ){
?>
    		<a href="#"><?php echo $value?></a>
<?php
    	}
?>

再说下二维数组的传递与遍历问题。下面的程序实现遍历某个目录下的文件。

<?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');
	}
}
?>

在视图中这么输出就可以:

<?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
		}
	}
?>

本文地址:http://www.nowamagic.net/librarys/veda/detail/1573,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1573

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《程序员修炼之道:从小工到专家》 亨特(Andrew Hunt) (作者), 托马斯(David Thomas) (作者), 马维达 (译者)

《程序员修炼之道:从小工到专家》内容简介:《程序员修炼之道》由一系列独立的部分组成,涵盖的主题从个人责任、职业发展,知道用于使代码保持灵活、并且易于改编和复用的各种架构技术,利用许多富有娱乐性的奇闻轶事、有思想性的例子及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,《程序员修炼之道:从小工到专家》都适合你阅读。

更多计算机宝库...