首先:我确实意识到在视图中使用模型是针对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>
由于最终模板应该由最终用户或类似用户编辑,我相信这是最简单的解决方案。
欣赏所有输入!
答案 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 inheritance和blocks可以用来创建相同的表单类型)。