如何使一个聪明的变量在{literal} {/ literal}下工作

时间:2011-02-15 09:33:51

标签: php smarty

我使用智能模板引擎跟随代码

在php文件中:

$smarty->assign('SITE_URL', 'http://localhost/mis/');

在tpl文件中:

  {literal}
  <script type="text/javascript" src="{$SITE_URL}lightbox/js/prototype.js"></script>
  <script type="text/javascript" src="{$SITE_URL}lightbox/js/scriptaculous.js?load=effects,builder"></script>;
  <script type="text/javascript" src="{$SITE_URL}lightbox/js/lightbox.js"></script>
{/literal}

我希望代码在html视图中呈现如下所示

   <script type="text/javascript" src="http://localhost/mis/lightbox/js/prototype.js"></script>
    <script type="text/javascript" src="http://localhost/mis/lightbox/js/scriptaculous.js?load=effects,builder"></script>
    <script type="text/javascript" src="http://localhost/mis/lightbox/js/lightbox.js"></script>

请帮助我。

3 个答案:

答案 0 :(得分:13)

{literal}用于防止变量,所以你不能像你描述的那样去做。相反,您应该在想要使用变量之前关闭{/ literal}标记。

{literal}&lt;script type=&quot;text/javascript&quot; src=&quot;{/literal}{$SITE_URL}{literal}lightbox/js/prototype.js&quot;&gt;&lt;/script&gt;<br>{/literal}

答案 1 :(得分:3)

另一种解决方案是使用{ldelim}和{rdelim}替换javascript的{和}。 不再需要{literal}。

答案 2 :(得分:0)

在这两个标签之间{literal} ... {/ literal}你不能使用smarty变量或php变量。这个标签提到了smarty编译器,这两个标签之间的代码应该是javascript代码。所以你聪明的变量在那里不起作用。如果您需要使用smarty变量/函数,则应关闭{literal}标记。