Symfony2 将变量从控制器传递到 javascript

Symfony2 pass variable from controller to javascript

我有这个controller.php

    $repository = $this->getDoctrine()->getManager()->getRepository('TechappStatsBundle:ParentForm');
    $data = $repository->findBy(array(),array('id' => 'desc'),1,0); 

    $formulaire = new ParentForm();

    $parent= $this->get('form.factory')->create(new ParentFormType(),$formulaire);

    if ($parent->handleRequest($request)->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($formulaire);
        $em->flush();
    }

    return $this->render('TechappStatsBundle:Stats:index.html.twig',array("res" => $data,
        "parentform"=>$parent->createView(),));

我想用 js 检查我视图中的变量 res 是否等于特定值,但我不知道如何传递它。

如果您想将数据传递给 Javascript,您可以将视图更新为:

  • 添加包含数据值的隐藏输入(如果这是一个表单)
  • 将数据添加到您使用 CSS
  • 隐藏的 DIV 或 P(或其他)
  • 向特定字段添加属性,例如 data-<field>

一旦你得到它,你可以很容易地从jQuery中获取值。

您可以从控制器传递参数,例如:

return $this->render('TechappStatsBundle:Stats:index.html.twig', array(
                "res" => "Your data here"));

并且您可以访问 index.html.twig 中的 "res" 参数,例如:

{% block js %}
 <script type="text/javascript">
var res = '{{ res }}';
alert(res);
</script>
{% endblock %}

我的选择总是在 数据值,

中发送

你可以这样做

<div id="res-result" data-res="{{ res }}" style="display: none;">

div不需要隐藏,如果是和div相关的东西我总是放在div相关的里面,即使不隐藏

然后从Jquery:

resValue = $('#res-result').data('res');

将 JS 文件放在 HTML 之外是最干净的方式 IMO