Symfony2,用Twig获取输入字段的值

时间:2014-11-20 13:08:27

标签: symfony input twig

我想从我的模板枝条中获取输入字段的值,而不是使用javascript。 我的输入字段没有表单,它是隐藏的输入。

{% block body -%}
    <input type="hidden" name="id_client" id="id_client" value="123"/>
    ...
{% endblock %}

我想这样做:

{{ path('client_view',{"id": value_Of_Hidden_Input})  }}

如何获得value_Of_Hidden_Input

修改

我的要求:

我有一个客户列表,每个客户都有一个按钮,可以显示客户"Modifier coordonnées"的详细信息。 我想点击一个客户AJAX函数将执行动作showAction 这是我的代码:

{% block body -%}
<div class="tab-client">
      <table id="mytable" class="table table-bordred table-striped" cellpadding="0" cellspacing="0">
      <thead>
          <tr>
              <th>Raison Sociale</th>
              <th>Identifiant</th>
              <th>M. de passe</th>
              <th>Solde actuel</th>
              <th class="text-center sty-td-action">Action</th>
          </tr>
      </thead>
      <tbody>
          {% for entity in entities %}
              <tr>
                  <td>{{ entity.raisonSociale}} </td>
                  <td>{{ entity.login }}</td>
                  <td>{{ entity.password }}</td>
                  <td>{{ entity.soldeSMS }}</td>
                  <td>
                      <a class="modifier-client" id="modif_coordonnee"><span class="glyphicon glyphicon1">Modifier coordonnées</span></a>
                      <a href="#historique" class="modifier-client"><span class="glyphicon glyphicon2">Voir Historique</span></a>
                      <a href="#ajout" class="modifier-client"><span class="glyphicon glyphicon3">Ajout transaction</span></a>
                  </td>
              </tr>
          {% endfor %}
      </tbody>
      </table>
</div><!--tab-client-->
{% endblock %}

{% block javascripts %}
    <script>
         $("#modif_coordonnee").click(function() {

                $.ajax({


                    //On lui indique le type d'envoie des informations

                    type: 'POST',

                    //On lui indique le chemin de la fonction

                    url:  '{{ path('client_show',{"id": value_of_id_client})  }}',


                    //On lui donne la valeur du choix qu'on a fait, et id est la variable qui va contenir notre valeur, nous la retrouvons dans notre controller




                    //Enfin nous lui disons de remplir notre formulaire avec le resultat  

                    success: function(response)

                    {
                        ......


                    }

                }

            )});

    </script>
{% endblock %}

我的问题是如何确定value_of_id_client

5 个答案:

答案 0 :(得分:3)

试试这个。

{{ path('client_view',{"id": form.name_field_hidden.vars.value})  }}

了解有关http://symfony.com/doc/current/reference/forms/twig_reference.html

的更多信息

答案 1 :(得分:1)

首先:id在整个文档中必须是唯一的。如果您有多个目标,请使用class - 属性。我还使用HTML5 url - 属性向您的循环中的每个实体添加了包含相应id的当前data

{% for entity in entities %}
    […]
    <a class="modifier-client handler" data-href="{{ path('client_show',{ 'id': entity.id }) }}">
        <span class="glyphicon glyphicon1">Modifier coordonnées</span>
    </a>
    […]
{% endfor %}

在JavaScript部分中,您必须更改选择器并检索当前单击元素的网址:

$('.handler').click(function() {
    var href = $(this).data('href');

    $.ajax({
        […]
        url: href,
        […]
    ));
});

答案 2 :(得分:0)

您需要使用FOSJsRoutingBundle生成一个正确的 Symfony路径,该路径接收一个参数并将其放在URL的正确部分(根据您的路由,您的变量部分可能在URI中间的某个地方!)

您必须关注所有installation instructions for the bundle,并确保expose the route in question

然后通过传递jQuery检索的值来将值拉入Routing.generate函数:

url:  Routing.generate('client_show', {id: $('#id_client').val()}),

答案 3 :(得分:-1)

你不能这样做,试试(js):

{{path('client_view')}}/+$("#id_client").val()

答案 4 :(得分:-1)

我认为处理此问题的正确方法是在控制器中。

发布表单时,请将该隐藏值并将其注入模板。

从Request对象中提取id_client。

$this->render('TEMPLATE', array('client_id'=>$request->query->get('id_client'));

然后在您的模板中,您可以使用client_id变量。