通过 stackoverlfow 和谷歌,我发现了很多关于这个的东西和很多提示,基本上所有的东西。因此我必须完全愚蠢才能实现这一点,但我希望我的聪明人不要解析我的 javascript。
不知何故,它正在这样做。正如文档中所述: {文字} 逃避被js解析的 block 。但是,这工作正常。 例如这个模板:http://pastebin.com/nfM1S1D8
它正常工作......但是
那些东西里写的东西从上到下完全被解析和忽略。 我可以在该文件中写 100 次 {literal},它不会对此置之不理。不仅如此。我的 jquery142min 和我的 jqueryui1812min 文件也被这个聪明的东西破坏了。我不能再使用任何 jquery 东西了:(((
有人可以告诉我如何变得聪明而不关心整个文件吗?我不打算粘贴 jqueryUI 文件只是为了表明它看起来像这样: {文字} jquery 用户界面代码 {/文字}
相信我,我试过
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
但这并不适用 - 是的,我确实删除了不存在的缓存,因为我没有缓存,是的,我确实每次都删除了编译的 View !
所以你看,我一定是太笨了,无法在这里解决这个问题,但我希望其他人对此有答案。
PS:结构和smarty代码: http://img560.imageshack.us/f/smarty.png/
@编辑: "js文件会引用调用模板的php文件来调用,路径不会根据smart y模板所在的位置,而是根据调用的php文件所在的位置。"
不适用于我,因为我可以在解析 js 文件后打开
最佳答案
我不确定你是怎么回事,但你做错了,但我会给你一些基础知识
不需要
{literal}.... {/literal}
包含一个文件,例子
<script type="text/javascript" src="{$prefix}js/jquery.form.2.64.js"></script>
不要在加载的 JS 文件中放置文字标签,IE 会导致您的 JAVASCRIPT 出现问题
但如果我想包括 say swfobjec iw 会这样做
{literal}
<script type="text/javascript">
var params = { allowScriptAccess: "always", wmode: "transparent"};
var atts = { id: "myytplayer"};
swfobject.embedSWF("http://www.youtube.com/v/{/literal}{$youtube_id}{literal}&enablejsapi=1&playerapiid=ytplayer&hl=en&fs=1&rel=0&autoplay=0","ytapiplayer", "689", "400", "8", null, null, params, atts);
</script>
{/literal}
您不获取文件的输出会像这样更改您的 phtml 分配
$smarty->assign('bodyCnt',$smarty->fetch(APPLICATION_PATH . DS . "view" . DS .$controller . DS . $action . ".tpl"));
请注意,我将文件名更改为“.tpl”,您的 tpl 文件中不应该有任何 php,这些文件中应该只有 html 和 smarty
如果你得到的是一个空白页面,那么有几件事情可能会发生
- 你的 PHP 文件有语法错误...验证你的 php
你没有给 smarty 一些或所有模板文件的正确位置
$smarty->display('index.tpl'); // will display a tpl file
关于php - smarty 不应该解析 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811314/