我正在尝试有一个javascript条件并将其与聪明的代码混合...这可能吗?
例如:
<script>
if (myjsVar == '2') {
{some smarty here}
}
</script>
这就是我要做的:
{literal}
<script type="text/javascript">
myjsVar = '2';
if (myjsVar == '2') {
{include file='inc.html'}
}
</script>
{/literal}
目前,此代码不包含任何内容...语法?
您可以使用文本来允许从字面上获取数据块。例如Javascript或CSS
{文字} 标记允许从字面上获取数据块。这是 通常用于 Javascript 或样式表块,其中 {curly 大括号} 会干扰模板分隔符语法。什么 在 {文字}{/文字} 标记中不被解释,但显示 按原样。如果您需要在 {文字} 块中嵌入模板标签, 考虑使用 {ldelim}{rdelim} 来转义各个分隔符 相反。
{literal}
<script type="text/javascript">
if (myjsVar == '2') {
{include file='inc.html'}
}
</script>
{/literal}
您还可以使用 {ldelim} 和 {rdelim} 用于转义 smartys 模板 delimeter
<script type="text/javascript">
if (myjsVar == '2') {ldelim}
{include file='inc.html'}
{rdelim}
</script>
Smarty 版本 2 被 Javascript 代码使用的花括号混淆了;它试图将它们解释为开放标签。为了避免此问题,<script>
元素的内容通常包含在{literal}
Smarty 块中。
缺点是,如果您需要使用 Smarty 函数生成 Javascript 块的片段,则必须关闭 {literal}
块并再次打开它。
在 Smarty 2 中,它的工作原理是这样的:
{assign var="text" value="Hello world!"}
<script>
{literal}
if (myjsVar == '2') {
alert('{/literal}
{* Smarty code here *}
{$text|escape:'javascript'}
{*
* End of the Smarty code; start another 'literal' block
* for the rest of the Javascript code
*}
{literal}');
}
{/literal}
</script>
生成的文本如下所示:
<script>
if (myjsVar == '2') {
alert('Hello world!');
}
</script>
Smarty 3不需要将脚本包含在{literal}
块中,只要大括号({
和}
)被空格字符包围即可。
更新:
或者,如果Javascript块只包含几个大括号和大量Smarty代码,您可以忘记{literal}
块并使用{ldelim}
和{rdelim}
进行{
和}
。
喜欢这个:
{assign var="text" value="Hello world!"}
<script>
if (myjsVar == '2') {ldelim}
alert('{$text|escape:'javascript'}');
{include file="inc.html"}
{rdelim}
</script>
它在 Smarty 版本 2 和 3 中的工作方式相同。
在 Smarty 3 模板中,只要 { 和 } 大括号被空格包围,它们就会被忽略。
您可以在没有文字擒纵机构的情况下使用跟随。
<script>
if (myjsVar == '2') {
{some smarty here}
}
</script>
以下代码需要文字转义。
{literal}
function bazzy() {alert('foobar!');}
{/literal}
或者,您也可以像这样更改 Smarty 分隔符:
<?php
$smarty->left_delimiter = '{{';
$smarty->right_delimiter = '}}';
请尝试以下操作:
{literal}
<script type="text/javascript">
var image_src = '{/literal}{$image}{literal}';
alert(image_src);
</script>
{/literal}
或
{literal}
<script language="javascript">
function ab()
{
////What you need
}
</script>
{/literal}
<a href="javascript:ab();">Something you need</a>
如果你想将聪明的变量分配给javascript
{literal}
<script>
if (myjsVar == '2') {
{/literal}{include file='inc.html'}{literal}
}
</script>
{/literal}