簡體   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