Escaping Smarty Parsing

Escaping Smarty Parsing

It is sometimes desirable or even necessary to have Smarty ignore sections it would otherwise parse. A classic example is embedding Javascript or CSS code in a template. The problem arises as those languages use the { and } characters which are also the default delimiters for Smarty.

The simplest thing is to avoid the situation altogether by separating your Javascript and CSS code into their own files and then using standard HTML methods to access them.

Including literal content is possible using {literal} .. {/literal} blocks. Similar to HTML entity usage, you can use {ldelim},{rdelim} or {$smarty.ldelim} to display the current delimiters.

It is often convenient to simply change Smarty's $left_delimiter and $right_delimiter.

Example 3-7. changing delimiters example

<?php

$smarty 
= new Smarty;
$smarty->left_delimiter '<!--{';
$smarty->right_delimiter '}-->';
$smarty->assign('foo''bar');
$smarty->display('example.tpl');

?>

Where example.tpl is:

<script language="javascript">
  var foo = <!--{$foo}-->;
  function dosomething() {
    alert("foo is " + foo);
  }
  dosomething();
</script>

See also escape modifier

© Copyright 2003-2023 www.php-editors.com. The ultimate PHP Editor and PHP IDE site.