Symfony2, obtenir la valeur du champ de saisie avec Twig
Je veux obtenir la valeur d'un champ de saisie de mon template twig avec twig pas avec javascript.
Mon champ de saisie n'a pas une forme, c'est un caché d'entrée.
{% block body -%}
<input type="hidden" name="id_client" id="id_client" value="123"/>
...
{% endblock %}
Je veux faire ceci:
{{ path('client_view',{"id": value_Of_Hidden_Input}) }}
Comment puis-je obtenir value_Of_Hidden_Input
EDIT:
Mon exigence:
J'ai une liste de clients et j'ai pour chaque client un bouton pour afficher les détails de la clientèle "Modifier coordonnées"
.
Je veux cliqué sur un client une fonction AJAX exécution de l'action showAction
C'est mon code:
{% 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 %}
Mon problème est de savoir comment pouvez déterminé value_of_id_client
?
- Où est le
input
-champ et, surtout, savalue
poste de partir? Est-ce une forme de ligne, comme{{ form_row(form.id_client) }}
? - Non, je n'ai pas de forme. Quand j'ai cliqué sur un bouton, la valeur de mon cachés changements d'entrée pour obtenir la valeur de mon client cliqued avec javascript
- Pouvez-vous expliquer plus détaillée de ce que vous essayez d'atteindre exactement?
- J'ai modifier mon post pour a l'origine probleme
Vous devez vous connecter pour publier un commentaire.
de l'essayer .
Avoir plus d'informations sur http://symfony.com/doc/current/reference/forms/twig_reference.html
POST
de données, vous ne pouvez pas passer variables Javascript par Twig comme Twig est déjà rendu par le temps dont vous avez besoin pour le faire.Première de toutes: Une
id
doit être unique dans tout le document en entier. Si vous avez plusieurs cibles utiliser leclass
-attribut de la place. J'ai aussi ajouté l'actuelurl
, y compris laid
à chaque entité dans votre boucle, en utilisant le HTML5data
-attribut:En JavaScript de votre partie, vous devez changer le sélecteur et de récupérer l'url de la actuellement cliqué élément:
<input>
-élément dans le détail de votre code d'exemple. Si cette solution fonctionne sans un supplément de<input>
-élément./path/to/route/{id}
. Il pourrait être quelque chose comme/object/{id}/edit
.'{{ path('client_show') }}/' + id'
, mais je vous en prie, essayez aussi les FOSJsRoutingBundle idéeVous devez utiliser FOSJsRoutingBundle pour générer un bon chemin de Symfony qui prend un argument et le place dans la bonne partie de l'URL (en fonction de votre parcours, de votre part variable peut être quelque part au milieu de l'URI!)
Vous devez suivre toutes les instructions d'installation pour le bundle, et assurez-vous que vous exposer la route en question.
Puis vous tirez sur la valeur dans le
Routing.generate
fonction en passant la valeur récupérée par jQuery:php app/console assets:install --symlink web
? Êtes-vous de charger lerouter.js
avec<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
? Si vous êtes à l'aide de l'annotation méthode, vous devez utiliser@FOSJsRoutingBundle/Resources/public/js/router.js
et pas@FOSJsRoutingBundle/Resources/js/router.js
options: expose: true
annotation? L'utiliser!) N'oubliez pas dephp app/console cache:clear --env=prod
Vous ne pouvez pas le faire de cette façon, essayez d'(js):
Je pense que la bonne façon de gérer cela est dans le contrôleur.
Lorsque vous validez le formulaire, prenez le caché de la valeur et de l'injecter dans le modèle.
Pull id_client de l'objet de Requête.
Puis dans votre modèle, vous pouvez utiliser le client_id variable.