Quiero obtener el valor de un campo de entrada de mi plantilla twig con twig no con javascript.
Mi campo de entrada no tiene una forma, es una entrada ocultos.

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

Yo quiero hacer esto:

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

¿Cómo puedo obtener value_Of_Hidden_Input

EDICIÓN:

Mi requisito:

Tengo una lista de clientes y tengo para cada cliente un botón para mostrar los detalles de cliente "Modifier coordonnées".
Quiero clic en uno de los clientes de una función AJAX se ejecuta la acción showAction
Este es mi código:

{% 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 %}

Mi problema es ¿cómo puede determinarse value_of_id_client?

  • Donde es el inputde campo y, especialmente, su value conning de? Es una forma de fila, como {{ form_row(form.id_client) }}?
  • No, no tengo un formulario. Cuando hice clic en un botón, el valor de mi oculta los cambios de la entrada para obtener el valor de mi cliente cliqued con javascript
  • Puede usted explicar más detallado de lo que usted está tratando de lograr exactamente?
  • Puedo editar mi post para explaine el original problème
InformationsquelleAutor Aminesrine | 2014-11-20

5 Comentarios

  1. 3

    probar esta .

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

    Tener más información sobre http://symfony.com/doc/current/reference/forms/twig_reference.html

    • OP es pedir para pasar un front-end de Javascript variable en una ruta. Si bien esto puede funcionar para un formulario enviado con POST de datos, no se puede pasar variables Javascript a través de la Ramita como Twig es ya prestados por el tiempo que usted necesita para hacer eso.
  2. 1

    Primero de todo: Un id debe ser único en todo el documento. Si usted tiene múltiples objetivos de utilizar el class-atributo en su lugar. También he añadido el actual url incluyendo las correspondientes id para cada entidad en su bucle, el uso de HTML5 data-atributo:

    {% 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 %}

    En la parte de JavaScript, tienes que cambiar el selector y recuperar la dirección url de la actualidad clic elemento:

    $('.handler').click(function() {
    var href = $(this).data('href');
    $.ajax({
    […]
    url: href,
    […]
    ));
    });
    • No veo la <input>-elemento en su detallado código de ejemplo. Así que esta solución funciona sin un extra de <input>-elemento.
    • Este tipo de obras, hasta la Symfony ruta es algo otro de /path/to/route/{id}. Podría ser algo como /object/{id}/edit.
    • pero, url: ‘{{ path(‘client_show’}}’ + id, no funcionan correctamente
    • Me he fijado su respuesta con una pequeña edición de un error tipográfico – también puede ser falta de una barra, como '{{ path('client_show') }}/' + id', pero yo te imploro que probar también la idea FOSJsRoutingBundle
    • Gracias – me pasa por alto que la abrazadera. 🙂
    • La syntaxe de la función de ruta con los parámetros es: «{{path(‘client_show’,{«id»: 1}) }}’, yo no no ¿cómo puedo integrar la varible javascript id en este syntaxe
    • Puede que nos muestran una completa prestados camino?
    • He actualizado el código para que funcione con cualquier URL construir por Symfony2 directamente y sin la necesidad de la ramita en el código JavaScript.
    • He arreglado el problema con las Url. Ahora también el JavaScript es perder de twig, hace que sea más fácil de mantener y subcontratar.

  3. 0

    Necesita utilizar FOSJsRoutingBundle para generar un adecuada Symfony ruta que toma un argumento y lo coloca en la parte correcta de la dirección URL (dependiendo de sus rutas, su porción variable puede estar en algún lugar en el medio de la URI!)

    Usted debe seguir todas las instrucciones de instalación para el paquete, y asegúrese de que usted exponer la ruta en cuestión.

    A continuación, tire el valor en el Routing.generate función pasando el valor recuperado por jQuery:

    url:  Routing.generate('client_show', {id: $('#id_client').val()}),
    • Es un bonito paquete. 🙂
    • Yo trato de hacer con este paquete, pero este error es producido: ReferenceError: goog no está definido en router.js «goog.proporcionar(‘fos.Router’);» Pero me lo resolvieron por: var id = $(this).de datos(‘id’); var ruta = «{{ path(‘client_show’, { ‘si’: «MARCADOR de posición» }) }}»; ruta = ruta.replace(«MARCADOR de posición», id); et puis url : ruta,
    • Hiciste php app/console assets:install --symlink web? Se te carga el router.js con <script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>? Si usted está utilizando el método de anotación, debe utilizar @FOSJsRoutingBundle/Resources/public/js/router.js y no @FOSJsRoutingBundle/Resources/js/router.js
    • He probado con th anotación y el @FOSJsRoutingBundle/Resources/public/js/router.js pero este error se ha producido : La ruta «client_show» no existe.
    • Ahora usted tiene que exponer su ruta (vea la options: expose: true anotación? El uso que!) No olvides php app/console cache:clear --env=prod
  4. -1

    Esto no se puede hacer de esa manera, tratar de(js):

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

    Creo que la forma correcta de manejar esta en el controlador.

    Al enviar el formulario, toma ese valor oculto y lo inyecta en la plantilla.

    Tire id_client del objeto de Petición.

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

    A continuación, en su plantilla, usted puede utilizar el client_id variable.

Dejar respuesta

Please enter your comment!
Please enter your name here