我正在寻找将数据从控制器传递到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); ?>
答案 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,即 将其发送到您的浏览器。如果你,请记得将它分配给变量 想要返回数据。