用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3507|回复: 4
收起左侧

整合smarty出现的诡异问题!

[复制链接]
发表于 2012-4-12 15:51:25 | 显示全部楼层 |阅读模式
整合smarty参考的帖子:http://codeigniter.org.cn/forums/thread-10345-1-1.html

controllers/admin/admin.php文件代码片段:
    public function getmenu(){
        $this->smarty->display("admin/menu.html");
    }

访问:http://localhost/leshop/index.php?d=admin&c=admin&m=getmenu
报错:
Fatal error:  Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "application/views/templates\admin\menu.html"  on line 108 ".menu-item .hover{color:red;font-weight:bold;}"  - Unexpected ":", expected one of: "}" , " "' in E:\wamp\www\leshop\application\libraries\smarty\sysplugins\smarty_internal_templatecompilerbase.php:621Stack trace:#0 E:\wamp\www\leshop\application\libraries\smarty\sysplugins\smarty_internal_templateparser.php(3154): Smarty_Internal_TemplateCompilerBase->trigger_template_error()#1 E:\wamp\www\leshop\application\libraries\smarty\sysplugins\smarty_internal_templateparser.php(3219): Smarty_Internal_Templateparser->yy_syntax_error(2, ':')#2 E:\wamp\www\leshop\application\libraries\smarty\sysplugins\smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(2, ':')#3 E:\wamp\www\leshop\application\libraries\smarty\sysplugins\smarty_internal_templatecompilerbase.php(171): Smarty_Internal_SmartyTemplateCompiler->doCompile('<!DOCTYPE html ...' in E:\wamp\www\leshop\application\libraries\smarty\sysplugins\smarty_internal_templatecompilerbase.php on line 621

menu.html文件102-108行代码:
<style type="text/css">
.tips {
  color: #CC0000;
}
.link {
  color: #000099;
}
.menu-item .hover{color:red;font-weight:bold;}
</style>

color:red;font-weight:bold; 去掉 就不报错了!

不知道这是为什么?

对我来说感觉有点诡异,或许各位能顺利帮我解决!

发表于 2012-4-12 16:40:52 | 显示全部楼层
请查看smarty的手册,css样式使用的大括号"{}"和smarty使用的界定符冲突,需要修改smarty的界定符或者完全按原样输出样式代码。
发表于 2012-4-12 16:41:14 | 显示全部楼层
把smarty的默认标签改掉就行了 默认是{}的 你改成{%%}这样的就不会有问题
 楼主| 发表于 2012-4-12 17:00:34 | 显示全部楼层
huboo82 发表于 2012-4-12 16:40
请查看smarty的手册,css样式使用的大括号"{}"和smarty使用的界定符冲突,需要修改smarty的界定符或者完全 ...

额 那为什么我去掉那段代码就可以了呢 ? 其它还有很多css样式的啊!
发表于 2012-4-13 09:03:47 | 显示全部楼层
你的{}不能写在同一行 否则smarty就认为是要解析的函数或变量
你换一行就行了 或者放到css文件中引用
或者更换smarty的界定符

至于用哪一种 自己选

本版积分规则