IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Variables twig et controlleur PHP


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Par défaut Variables twig et controlleur PHP
    Bonjour,

    Je rencontre un petit souci depuis ce matin. J'ai une vue twig, à laquelle je fais passer deux paramètres que je récupère ensuite dans un controlleur PHP, tel que :

    Vue twig (c'est donc au niveau du href que j'ai mon soucis)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    {% extends 'layout.html.twig' %}
     
    {% block body %}
        <h1>Récapitulatif de votre commande : </h1>
     
    <div id = 'bodyRecap'>
        <div id = 'infosClients'>
            <h2>Informations client</h2>
            {% for panier in basket %}
                <h3>Date de réservation : <br /><strong>{{ panier.date|date('d-m-Y') }}</strong></h3>
                <h3>Mail : <br /><strong>{{ panier.mail }}</strong></h3><br/>
            {% endfor %}
        </div>
        <div id = 'recap'>
            <table>
                {% for billet in billets %}
                    <tr>
                        <td><h3>Billet n° {{ loop.index }} : </h3></td>
                        <td><h3><strong>{{ billet.name }}</strong></h3></td>
                        <td><h3><strong>{{ billet.firstname }}</strong></h3></td>
                        <td><h3><strong>{{ billet.price }} €</strong></h3></td>
                    </tr>
                    <br />
     
                {% endfor %}
            </table>
        </div>
        <div id = 'priceBasket'>
            <h2 id = 'titreTotal'>Total : </h2>
            {% for panier in basket %}
                <h3>Total HT : <strong>{{ panier.totalPrice }} €</strong></h3>
                <h3>TVA à 20% : <strong>{{ panier.totalTVA }} €</strong></h3>
                <h3>Total TTC : <strong>{{ panier.totalTTC }} €</strong></h3>
                <a href = "{{ path('paiement', {'totalTTC': panier.totalTTC, 'mail': panier.mail}) }}">Procéder au paiement</a>
            {% endfor %}
        </div>
    </div>
    {% endblock %}
    Controlleur associé qui récupère mes deux variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    namespace AppBundle\Controller\Paiement;
     
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
     
     
     
    class PaiementController extends Controller
    {
        /**
         * @Route("/paiement", name="paiement")
         *
         * @param int $tarifTTC
         * @param string $mail
         */
        public function paiementAction($tarifTTC, $mail)
        {
            dump($tarifTTC);
            dump($mail);exit;
        }
    }
    Et voici l'erreur que je rencontre :
    Controller "AppBundle\Controller\Paiement\PaiementController::paiementAction()" requires that you provide a value for the "$tarifTTC" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.
    Mes deux variables passées me rendent bien des valeurs int et string, comme précisé dans mon annotation, le routing a donc l'air de bien se passer, mais je ne comprends pas pourquoi j'ai ce message d'erreur. J'ai bien des valeurs qui remontent, elles s'affichent correctement sur ma vue Twig.

    Toute idée est la bienvenue !

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 671
    Par défaut
    il faut peut-être appeler la variable "$totalTTC" au lieu de "$tarifTTC"

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Par défaut
    Petite erreur en effet... J'ai modifié et j'ai toujours ce message d'erreur :

    Controller "AppBundle\Controller\Paiement\PaiementController::paiementAction()" requires that you provide a value for the "$totalTTC" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Par défaut
    Bonjour,

    J'ai trouvé moi-même, et en effet c'était une erreur assez bête... Dans ma route, il fallait que je passe mes deux paramètres, tel que :
    @Route("/paiement/{totalTTC}/{mail}", name="paiement")

    Alors après, je me posais la question de savoir s'il n'était pas possible de gérer ces deux variables différemment, car ils remontent ici dans l'URL, ce que je ne souhaite pas forcément...

    Merci d'avance

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    oui c'est une très mauvaise idée de mettre ce genre de paramètre dans l'url

    passe un Request dans ton action et utilise des formulaires en post

    http://symfony.com/doc/current/controller.html

    bon courage

Discussions similaires

  1. [Sécurité] Variables d'environnement en PHP
    Par _shuriken_ dans le forum Langage
    Réponses: 8
    Dernier message: 14/06/2006, 14h16
  2. Utiliser variable Javascript dans du PHP
    Par phpaide dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/05/2006, 15h14
  3. Probleme de variable entre SQL et Php
    Par copin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/06/2005, 10h58
  4. Réponses: 11
    Dernier message: 11/03/2005, 17h41
  5. Réponses: 3
    Dernier message: 03/02/2005, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo