繁体   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