子视图在Codeigniter中呈现的html页面之前加载

时间:2019-03-01 11:06:35

标签: php codeigniter codeigniter-3

我有两个视图,一个用于菜单,另一个用于页面内容。

  
      
  1. 标题
  2.   
  3. 购物车   在标题cartpopup中
  4.   

是一个包含购物车数据的数组键,只有当用户单击购物车图标时才会弹出该数据,但是在此处,当页面呈现时,此cartpopup内容会在生成html之前打印出来。

  

此代码在页面上生成html之前打印:

 <li>
     <a href="#" class="image"><img src="1550847861_Hydrangeas.jpg class="cart-thumb" alt=""></a>
     <div class="cart-item-desc">
         <h6><a href="#">Item1</a></h6>
         <p>1x - <span class="price">475</span></p>
     </div>
     <span class="dropdown-product-remove"><i class="icon-cross"></i></span>
</li>

然后生成html和正文内容

  

header.php

<div class="cart">
    <a href="#" id="header-cart-btn" target="_blank"><i class="ti-bag"></i><span class="cart_quantity"><?php echo $tot_cart;?></span></a>         
    <ul class="cart-list">
      <?php echo $cartpopup; ?>
    </ul>
</div>
  

控制器:

public function index()     {  
      $data['output_cart']= $this->show_cart();
      $tot_cart=$this->cart->total_items();
      $data_menu = $this->category_menu();
      $output_cart_popup= $this->load_cart_header_pop(); 
      $this->load->view('header',['menudata'=>$data_menu,'tot_cart'=>$tot_cart,'cartpopup'=>$output_cart_popup]);       
      $this->load->view('cart',$data); 
}

屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

您仅需将第三个参数用作“ true”,如:

$subView = $this->load->view(YOUR_VIEW, YOUR_DATA_ARRAY, true);
$params = array(
YOUR_DATA_ARRAY,
'subView' => $subView 
);
$this->load->view(YOUR_VIEW, YOUR_DATA, true);

这样,您将只将视图预加载到内存中,然后只需将params中的视图传递给主视图,最后在主视图中回显它即可,如:

echo $subView;