2012-04-21 54 views
1

首先:我意識到在視圖中使用模型是違背MVC層次結構 - 但這是迄今爲止我找到的最流暢的解決方案。Smarty + CodeIgniter - 正確使用模型的方法

我已將Smarty整合到我的CodeIgniter CMS應用程序中。其功能之一是使用模板以及縮小靜態內容,如CSS和JavaScript。因此,我試圖做這樣的事情在模板文件:

//Adding the static content 
<?php 
$this->content->css(array('my.css', 'style.css')); 
?> 

<html> 
    <head> 
     //Displaying the now minified static content 
     <?php $this->content->display() ? > 
    </head> 
</html> 

因爲最終的模板應該是由最終用戶或類似的編輯,我認爲這是最簡單的解決方案。

欣賞所有輸入!

回答

0

我想你不應該在Smarty模板中使用任何代碼相關的函數。 CSS目錄是不變的,因此不必調用php函數。

如果你需要從CI的一些信息,你會assign在您的控制器功能的Smarty的變量 - 所以不破MVC:

$smarty->assign(array(
    "display" => $this->content->display(), 
    "css_include" => $this->content->css(array("my.css","style.css")) 
)); 

由於jco在簡單的情況下,上面寫的CI & Smarty可能「過度殺傷」。但是相同的情況非常有用(例如template inheritanceblocks可以用來創建相同的表單類型)。

+0

模板繼承的效果可以在沒有Smarty幫助的情況下在CI中重新創建。 – 2012-04-22 14:28:05

+0

嗯,我試圖讓設計師直接在模板中輸出他們的樣式,而不需要編輯控制器等。猜猜我必須選擇..謝謝你的回答! – Zar 2012-04-22 14:28:45

+1

@KemalFadillah我知道它可以創建,但在smarty它已經準備好了。而對於我來說,smarty代碼比html代碼中的php代碼更具可讀性(我非常討厭'')。 – uzsolt 2012-04-22 15:37:29

0

我已經使用了smarty和codeigniter,在我的經驗中使用這兩個都是矯枉過正。 Smarty只是將你的代碼分解,恕我直言,使用起來很麻煩。 認爲codeigniter視圖等同於你的smarty模板。

如果你擔心微小你可以嘗試使用這樣的事情:CSS Minification Library

希望這是有幫助的。

+0

是的,我其實只需要CI語法分析器類的條件,它會是完美的..謝謝你的回答! – Zar 2012-04-22 14:29:17

相關問題