繁体   English   中英

使用Smarty将价值从PHP传递给JS?

[英]Pass value from PHP to JS with Smarty?

如何将值从php传递到javascript? 我正在与smarty合作,并且尝试了此操作,但是js似乎将其视为一个字符串。 该值设置为20。

$smarty->assign('settings', $settings); //$settings is an array

$ settings来自文件,基本上是一些设置。 我想在具有该值的html文档中选择一个选项,但是它不起作用。

<select id="entrys">
    <option>5</option>
    <option>10</option>
    <option>20</option>
</select>

然后在js文件中:

$(document).ready(function()
{
    $('#entrys').val("{$settings['frontendEntrys']}");
});

但是没有选择任何选项,甚至没有选择第一个或默认值,如果我尝试打印{$ settings ['frontendEntrys']},它也将无法正常工作。 它似乎只是作为一个字符串。

顺便说一句:这是通过Smarty或一般方式传递某些设置的好方法吗? 如果不使用smarty,如何传递值? 这是正确的吗? 如果是在html文件中完成的,这是个好方法吗?

<script>
    var data = <?php echo $settings['entrys']; ?>
</script>

在smarty中,您可以使用: {$myarray|@json_encode} 如何使用smarty生成json?

所以可能是这样的:

<script>
    var data = {$settings|@json_encode}
</script>

然后,您可以像普通对象data.entrys;一样在js中访问它data.entrys; 更少的php / js mishmash更清晰的js代码。

$('#entrys').val(data.entrys);

在您的Smarty模板文件上定义一个全局JS变量:

<script>
_Entrys = {$settings['frontendEntrys']};
</script>

并在JS文件上使用:

$(document).ready(function()
{
    $('#entrys').val(_Entrys);
});

您可以使用这种方法,它具有同步HTML和.ini设置的附加优点。

<select id="entrys">
{foreach $settings as $setting}
    <option {if $setting == 'frontendEntrys'}selected{/if}>{$setting}</option>
{/foreach}
</select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM