Smarty + CodeIgniter - 使用模型的正确方法

时间:2012-04-21 13:49:25

标签: php codeigniter smarty template-engine

首先:我确实意识到在视图中使用模型是针对MVC层次结构的 - 但这是迄今为止我发现的最平滑的解决方案。

我已将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>

由于最终模板应该由最终用户或类似用户编辑,我相信这是最简单的解决方案。

欣赏所有输入!

2 个答案:

答案 0 :(得分:0)

我既使用了smarty又使用了codeigniter,根据我的经验,使用两者都是矫枉过正。 Smarty只是破坏你的代码,恕我直言使用起来很麻烦。 将codeigniter视图视为智能模板的等效视图。

如果您担心缩小,可以尝试使用以下内容:CSS Minification Library

希望这有用。

答案 1 :(得分:0)

我认为你不应该在Smarty-templates中使用任何与codeigniter相关的功能。 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&amp; Smarty可能“过度杀伤”。但是同样的情况它非常有用(例如template inheritanceblocks可以用来创建相同的表单类型)。