2016-12-07 130 views
-1

我正在寻找最佳实践,当将数据从控制器传递给Codeigniter中的子视图时,至此我创建了一个加载子视图的布局文件。例如,当我一直这样做时,它确实有用,但我想知道是否有更干净的做事方式?或者有没有更好的选择模板我的HTML和CSS,而不必为每个功能做到这一点?将数据传递给子视图codeigniter的最佳实践

每个单独的$数据变量目前重命名为VAR1,$ VAR2,$ VAR3等

这里是我的代码加载分页,并把该给子视图的时候。

function index($start=0) 
{ 
    $var1['posts']=$this->post->get_posts(3,$start); 
    $this->load->library('pagination'); 
    $config['base_url']=base_url().'posts/index/'; 
    $config['total_rows']=$this->post->get_posts_count(); 
    $config['per_page']=3; 
    $this->pagination->initialize($config); 
    $var2['pages']= $this->pagination->create_links(); 
    $var3=array('subview' => 'post_index'); 

    $data=array_merge($var1, $var2, $var3); 

    $this->load->view('layouts/layout',$data); 
} 

而在我的模板文件我用这行代码在体内加载子视图:

<?php $this->load->view($subview); ?> 
+0

什么是$ var3 = array('subview'=>'post_index');'for? –

+0

post_index是子视图的名称,它列出了博客中的所有帖子。这行代码通过将'subview'指定为帖子索引,将此子视图放置在布局正文内。在每个页面中,它将被用作: $ var3 = array('subview'=>'login form');' $ var3 = array('subview'=>'products_index');'' –

回答

2

好确实有一个办法做到这一点。假设你有一个叫post_index的视图,其中你通过$var['posts'],然后你想把这个视图放到你的主布局中。

$var['posts'] = $this->post->get_posts(3, $start); 

// setting the third parameter as true would return the view as 
// data which you can pass to another view 
$data['page'] = $this->load->view('post_index', $var, TRUE); 
$this->load->view('layouts/layout', $data); 

从笨文档

返回看法数据

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

相关问题