Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Smarty 2模板中消除JavaScript中对{ldelim}和{rdelim}的需要_Javascript_Smarty_Templating_Error Logging_Smarty2 - Fatal编程技术网

在Smarty 2模板中消除JavaScript中对{ldelim}和{rdelim}的需要

在Smarty 2模板中消除JavaScript中对{ldelim}和{rdelim}的需要,javascript,smarty,templating,error-logging,smarty2,Javascript,Smarty,Templating,Error Logging,Smarty2,我在Smarty 2模板文件中有以下JavaScript块 代码与提供者提供给我的代码一字不差,但很明显,我必须在中添加一些{ldelim}和{rdelim}Smarty标记来替换JavaScript{和} 我需要输入$log\u id,这不会改变,但是有没有一种方法可以让我编写这个清理程序,而不需要所有这些标记,从而使代码看起来不那么可读 我知道{literal}标记,但打开和关闭该标记可能会降低可读性 <script type='text/javascript'> win

我在Smarty 2模板文件中有以下JavaScript块

代码与提供者提供给我的代码一字不差,但很明显,我必须在中添加一些
{ldelim}
{rdelim}
Smarty标记来替换JavaScript
{
}

我需要输入
$log\u id
,这不会改变,但是有没有一种方法可以让我编写这个清理程序,而不需要所有这些标记,从而使代码看起来不那么可读

我知道
{literal}
标记,但打开和关闭该标记可能会降低可读性

<script type='text/javascript'>
    window.Muscula = {ldelim} settings:{ldelim}
        logId:"{$log_id}", suppressErrors: false, branding: 'none'
    {rdelim}};
    (function () {ldelim}
        var m = document.createElement('script'); m.type = 'text/javascript'; m.async = true;
        m.src = (window.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//musculahq.appspot.com/Muscula.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(m, s);
        window.Muscula.run=function(c){ldelim}eval(c);window.Muscula.run=function(){ldelim}{rdelim};{rdelim};
        window.Muscula.errors=[];window.onerror=function(){ldelim}window.Muscula.errors.push(arguments);
        return window.Muscula.settings.suppressErrors===undefined;{rdelim}
    {rdelim})();
</script>

Muscula={ldelim}设置:{ldelim}
logId:“{$log_id}”,suppressErrors:false,branding:'none'
{rdelim}};
(函数(){ldelim}
var m=document.createElement('script');m.type='text/javascript';m.async=true;
m、 src=(window.location.protocol=='https:'?'https:':'http:')+
“//musculahq.appspot.com/Muscula.js”;
var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(m,s);
window.Muscula.run=function(c){ldelim}eval(c);window.Muscula.run=function(){ldelim}{rdelim};{rdelim};
window.Muscula.errors=[];window.onerror=function(){ldelim}window.Muscula.errors.push(参数);
返回窗口.Muscula.settings.suppressErrors==未定义;{rdelim}
{rdelim})();

在这种情况下,您可以更改smarty分隔符


您的模板将成为:

(注意变量{{$variable}}的双括号)

<script type='text/javascript'>
    window.Muscula = { settings:{
        logId:"{{$log_id}}", suppressErrors: false, branding: 'none'
    } };
    (function () {
        var m = document.createElement('script'); m.type = 'text/javascript'; m.async = true;
        m.src = (window.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//musculahq.appspot.com/Muscula.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(m, s);
        window.Muscula.run=function(c){eval(c);window.Muscula.run=function(){};};
        window.Muscula.errors=[];window.onerror=function(){window.Muscula.errors.push(arguments);
        return window.Muscula.settings.suppressErrors===undefined;}
    })();
</script>

window.Muscula={设置:{
logId:“{{$log_id}}”,suppressErrors:false,branding:'none'
} };
(功能(){
var m=document.createElement('script');m.type='text/javascript';m.async=true;
m、 src=(window.location.protocol=='https:'?'https:':'http:')+
“//musculahq.appspot.com/Muscula.js”;
var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(m,s);
window.Muscula.run=function(c){eval(c);window.Muscula.run=function(){};};
window.Muscula.errors=[];window.onerror=function(){window.Muscula.errors.push(参数);
返回窗口.Muscula.settings.suppressErrors==未定义;}
})();

在这种情况下,您可以更改smarty分隔符


您的模板将成为:

(注意变量{{$variable}}的双括号)

<script type='text/javascript'>
    window.Muscula = { settings:{
        logId:"{{$log_id}}", suppressErrors: false, branding: 'none'
    } };
    (function () {
        var m = document.createElement('script'); m.type = 'text/javascript'; m.async = true;
        m.src = (window.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//musculahq.appspot.com/Muscula.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(m, s);
        window.Muscula.run=function(c){eval(c);window.Muscula.run=function(){};};
        window.Muscula.errors=[];window.onerror=function(){window.Muscula.errors.push(arguments);
        return window.Muscula.settings.suppressErrors===undefined;}
    })();
</script>

window.Muscula={设置:{
logId:“{{$log_id}}”,suppressErrors:false,branding:'none'
} };
(功能(){
var m=document.createElement('script');m.type='text/javascript';m.async=true;
m、 src=(window.location.protocol=='https:'?'https:':'http:')+
“//musculahq.appspot.com/Muscula.js”;
var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(m,s);
window.Muscula.run=function(c){eval(c);window.Muscula.run=function(){};};
window.Muscula.errors=[];window.onerror=function(){window.Muscula.errors.push(参数);
返回窗口.Muscula.settings.suppressErrors==未定义;}
})();

谢谢,可以用这种方式更改分隔符。然而,我发现这样做会阻止变量
$log\u id
被解析,这意味着以下是输出:
logId:“{$log\u id}”
。因此,我认为这并不能完全解决我的问题。我尝试过像您的示例中那样更改分隔符,然后添加双大括号-但这仍然解析为
logId:“{{$log\u id}}”
。我正在使用Smarty 2.6.9-该版本支持吗?我想支持。你在{literal}标签里面吗?不,我没有
{literal}
标签。我从Smarty自己那里得到的反馈是要么使用
{literal}
{ldelim}
标记,要么升级到Smarty 3。遗憾的是,如果没有大量的工作,我无法做到这一点,所以我的模板看起来可能有点笨拙。你能给我们看看你的PHP代码吗?(呈现模板的位置)谢谢,可以用这种方式更改分隔符。然而,我发现这样做会阻止变量
$log\u id
被解析,这意味着以下是输出:
logId:“{$log\u id}”
。因此,我认为这并不能完全解决我的问题。我尝试过像您的示例中那样更改分隔符,然后添加双大括号-但这仍然解析为
logId:“{{$log\u id}}”
。我正在使用Smarty 2.6.9-该版本支持吗?我想支持。你在{literal}标签里面吗?不,我没有
{literal}
标签。我从Smarty自己那里得到的反馈是要么使用
{literal}
{ldelim}
标记,要么升级到Smarty 3。遗憾的是,如果没有大量的工作,我无法做到这一点,所以我的模板看起来可能有点笨拙。你能给我们看看你的PHP代码吗?(在其中渲染模板)