簡體   English   中英

設置javascript變量的symfony方法是什么?

[英]What's the symfony way to set a javascript variable?

<script type="text/javascript">var name="value";</script>

我需要在use_javascript('name.js');包含的另一個文件之前執行它use_javascript('name.js');

如何在symfony中做到?

您可以用多種方法來做

假設在您的操作方法中,您添加了一個模板變量,如下所示

$this->jsVar = 'foo';

然后,在您的模板文件中

echo javascript_tag( 'var name="' . $jsVar . '";' );

要么

<script type="text/javascript">
  var name='<?php echo $jsVar; ?>';
</script>

編輯

好的,根據您的特定需求,您需要做一些事情。 首先,查看您的頁面模板(位於apps/app-name/templates -您應該會看到類似以下內容的行

<?php include_javascripts(); ?>

該函數將采用view.yml文件中定義的所有javascript資源或use_javascript()幫助程序所包括的所有JavaScript資源,並將其打印到頁面上。

所以我們的目標,那么,是把一個JavaScript塊前面在所有其他腳本都包含(並在前方,我的意思是第一次出現在源序)

為了以某種靈活的方式解決此問題,讓我們使用一個插槽。 修改頁面模板中的上一行,如下所示

<?php
  if ( has_slot( 'global_js_setup' ) )
  {
    include_slot( 'global_js_setup' );
  }
  include_javascripts();
?>

然后,在您的操作方法中

sfLoader::loadHelpers( 'Asset' );
$this->getResponse()->setSlot(
    'global_js_setup',
  , javascript_tag( 'var name="value";' );
);

如果需要,可以通過使用組件插槽擴展此想法。

為了以不use_dynamic_javascript方式實現這一點,我建議使用use_dynamic_javascript幫助器。

這是樹枝示例,您可以使用php。

{% if value %}
    <script type="text/javascript">var name="{{ value }}";</script>
{% endif %}

如果您的腳本無法正常工作,則大多數錯誤是(在添加主腳本后定義了值),或者(您可以在主腳本中更改相同的變量,這將使您的源代碼出錯。)

如果需要粘貼許多變量,則可以使用。 像這樣

{% if js_items %}
    <script type="text/javascript">
    {% for item in js_items %}
          var {{ item.name }} = "{{ item.value }}";
    {% endfor %}
    </script>
{% endif %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM