zoukankan      html  css  js  c++  java
  • 解决Smarty模板中CSS导致的SmartyCompilerException问题

    今天在项目中应用Smarty模板引擎时遇到的问题,PHP解析出错,主要定位在CSS部分,错误形如“Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template”。仔细分析了下,发现是嵌入HTML的CSS {}花括号与Smarty的界定符号{}花括号冲突,如果简单地将CSS标记嵌入到HTML文档首部,将导致“不可识别标记”错误,经过搜索得到三种办法以解决这个问题:

    1. 外链CSS文件。利用link外链层叠样式表文件。例如:

     <link href="style.css" type="text/css" rel="stylesheet" /> 
    

    2. 使用literal标记。利用Smarty独有的literal标记区分不需要解析的区域,用标记{literal}和{/literal}包含起来的区域Smarty将跳过分析直接输出,这样就不会导致冲突了。

    {literal}
    <style type="text/css">
    body {
     color:#FFF;
    }
    </style>
    {/literal} 
    

    3. 修改Smarty的默认定界符。通过设置left_delimiter和right_delimiter属性来实现这一目的。

    require("Smarty.class.php");
    $template = new Smarty;
    $template->left_delimiter = '<{';
    $template->right_delimiter = '}>'; 
    

    第3种方法的缺点就是要改原有模板的解析标签,比较麻烦,推荐第1种和第2种灵活搭配使用。

  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/2177908.html
Copyright © 2011-2022 走看看