使用 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 来自一个文件,基本上是一些设置。 我想 select 具有该值的 html 文档中的一个选项,但它不起作用。

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

然后在 js 文件中:

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

但是没有选项被 selected 然后甚至不是第一个或默认值,如果我尝试打印 {$settings['frontendEntrys']} 它也不起作用。好像只是当作一个字符串。

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

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

在您的 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>

在 smarty 中你可以使用:{$myarray|@json_encode} Howto generate json with smarty?

所以大概是这样的:

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

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

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