您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > PHP框架 > CodeIgniter

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

作者:  来源:互联网  日期:2013-10-23 13:30:32
收藏  评论:( 0 )  阅读:979

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

视图是用户用户能看到你的网站的所有。 他们使用一个统一的接口, 而且可以根据需要进行修改。 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'] = 'Uncletoo-专注PHP技术推广'; 
        $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'] = 'UncleToo-专注PHP技术推广' ; 
        $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 
        } 
    } 
?>




除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/ci/427.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论