2016-12-07 51 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 (布爾值),它將返回數據。默認行爲是錯誤的,其中 將其發送到您的瀏覽器。如果您想要返回數據,請記得將它分配給一個變量。

相關問題