将数据传递给subview codeigniter的最佳实践

时间:2016-12-07 10:02:21

标签: php codeigniter templates

我正在寻找将数据从控制器传递到Codeigniter中的子视图的最佳实践,到目前为止,我已经创建了一个加载子视图的布局文件。例如,当我这样做时,它确实有效,但我想知道是否有更清洁的做事方式?或者有没有更好的选项来模板我的html和CSS而不必为每个函数执行此操作?

目前将每个单独的$ data变量重命名为$ 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); ?>

1 个答案:

答案 0 :(得分:2)

好的确有办法做到这一点。假设您有一个名为$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); ,然后您想将该视图放在主布局中。

var lyr = (L.tileLayer as any).extend({});

来自codeigniter docs

  

将视图作为数据返回

     

有第三个可选参数可供您使用   更改方法的行为,以便它以字符串形式返回数据   而不是将其发送到您的浏览器。如果您愿意,这可能很有用   以某种方式处理数据。如果将参数设置为TRUE   (布尔值)它将返回数据。默认行为为false,即   将其发送到您的浏览器。如果你,请记得将它分配给变量   想要返回数据。