2016-12-03 132 views
0

我是使用CodeIgniter框架的初學者。以前,我學過Laravel。而我的問題是我想在Laravel製作像Blade這樣的動態模板。所以,在每一頁我只加載只有該頁面需要的樣式和腳本。CodeIgniter中的部分視圖

以下是我使用CodeIgniter創建的代碼,因此可以動態加載自定義樣式和自定義腳本。

的template.php

<?php 
     defined('BASEPATH') OR exit('No direct script access allowed'); 

     // <hmtl> 
     $this->load->view($header); 
     if(isset($style)) 
      $this->load->view($style); 

     // <body> 
     $this->load->view($navbar); 
     if(isset($sidebar)) 
      $this->load->view($sidebar); 
     $this->load->view($content); 
     $this->load->view($footer); 
     // </body> 

     if(isset($script)) 
      $this->load->view($script); 
     // </html> 

和我的控制器

public function index() 
    { 
     $data = [ 
      'title'  => 'Home', 
      'header' => 'partials/_header', 
      'navbar' => 'partials/_navbar', 
      'content' => 'guest/public', 
      'footer' => 'partials/_footer' 
     ]; 
     $this->load->view('template', $data); 
    } 

也許你有更好的想法,因爲我堅持了下來。在Laravel很容易,因爲有@yield@section
來自你們的任何想法,都會對我很有幫助,謝謝。

回答

1

終於,我只是想出了最好的方式使其動態。如何在每個不同的頁面加載自定義腳本和CSS。

這裏是的template.php代碼(視圖文件夾中)

<?php 
    defined('BASEPATH') OR exit('No direct script access allowed'); 

    $this->load->view($header); 
    $this->load->view($navbar); 
    $this->load->view($content); 
    $this->load->view($footer); 

和控制器控制器

public function index() { 
    $data = [ 
     'header'  => 'partials/_header', 
     'style'   => 'partials/style/_public_css', 
     'navbar'  => 'partials/_navbar', 
     'content'  => 'guest/public', 
     'footer'  => 'partials/_footer', 
     'script'  => 'partials/script/_public_js' 
    ]; 
    $this->load->view('template', $data); 
} 

和在_header.php的泛音視圖

<!DOCTYPE HTML> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>...</title> 

    <!-- Partial CSS Here --> 
    <?php if(isset($style)) $this->load->view($style); ?> 
</head> 
<body> 

_navbar。PHP

<header> 
    <nav class="navbar navbar-inverse navbar-fixed-top"> 
     .... 
    </nav> 
</header> 

然後在控制器中的內容變量,它加載public.php(在我的情況,你有你想要加載任何頁面替換)

<div class="container"> 
    .... 
</div> 

,最後一個是_footer .PHP

<footer> 
     .... 
    </footer> 

    <!-- JQuery HERE --> 

    <!-- any js that you will you in all pages HERE --> 

    <!-- Partial Script Here --> 
    <?php if(isset($script)) $this->load->view($script); ?> 
</body> 
<html> 

記住,如果您的頁腳確實在每一個頁面中的靜態放置您的JQuery在_footer.php,如果它不只是放置jqu在_header.php中,即使最先加載腳本也不是最佳做法。

0

我曾經做過類似的事情,前一段時間我承認過,但我在模板庫中做了所有事情。

$this->template_library->set_css_script('page.css'); 
    $this->template_library->set_layout('product_page'); 

使用制定者控制器將通過類似通話結束:

$this->template_library->render_page(); 

然後模板庫將使用負載>視圖功能來創建它依賴於網頁和輸出對設置或未設置的值,頁面佈局意味着我可以有各種佈局佈局,如home_page,product_page,checkout_page,message_page等。

對於佈局,我有一個主頁面佈局,以及不同頁面的變體。

最後,雖然我恢復到簡單的意見,與常見文件的頁眉和頁腳和任何變種。維護大量不同的視圖文件比維護所有佈局和模板以及部分更容易。

有一件事可以幫助很多是視圖可以加載另一個視圖。因此,爲了保持乾燥的一切,這意味着任何衍生的頁面部分視圖可以保存在「部分」文件夾中,用於諸如「相關產品」或「博客列表」之類的內容等。

希望有所幫助。