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 :

résultat d'une fonction du controlleur dans un template twig [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut résultat d'une fonction du controlleur dans un template twig
    Bonjour,

    j'essaie d'intégrer le résultat d'une requete que j'effectue depuis le controlleur dans une vue twig,

    voila le code dans le controleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public function ClientAction(){
    	$DB_SERV=$this->container->getParameter('database_host');
    	$DB_NAME=$this->container->getParameter('database_name');
    	$DB_LOG=$this->container->getParameter('database_user');
    	$DB_PAS=$this->container->getParameter('database_password');
    	$dbconnect = new \PDO('pgsql:host='.$DB_SERV.'; dbname='.$DB_NAME.';', $DB_LOG, $DB_PAS, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) );
    	$req=$dbconnect->query("SELECT cl_nomsociete,idclient FROM client ORDER BY cl_nomsociete");
    	while($result=$req->fetch())
    	{
    		echo '<option value="'.$result['idclient'].'">'.$result['cl_nomsociete'].'</option>';
    	}
    }
    et voila le code dans la vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select>
        {% render(controller('EliprojectCollaborateurBundle:Collaborateur:Client'))%}
    </select>
    le probleme est que quand je l'execute j'ai une erreur 500, exactement

    An error occurred while loading the web debug toolbar (500: Internal Server Error).

    Do you want to open the profiler?
    je sais pas déja si mon code est correct, apparement non,

    merci de votre aide qui me sera si précieuse.

  2. #2
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Bonjour,

    je sais pas déja si mon code est correct, apparement non
    Je vais pas te mentir : c'est pas que ton code n'est pas correct, c'est qu'il est absolument désastreux, et quand bien même il fonctionnerait ce serait toujours un putain de crime.

    Je pense que tu es passé totalement à coté de la documentation. Donc commence par là. Au gré de ta lecture tu t'apercevras qu'un contrôleur n'est pas supposé faire de traitement métier, ni de requête ni quoique ce soit d'un peu loufoque comme des 'echo'.

    Rien n'est bon dans ton code, vraiment rien de rien. Ce n'est pas agréable à entendre et ce n'est pas pour le plaisir de critiquer que je dis ça mais vraiment : si tu veux utiliser Symfony, il faut lire la documentation : ça prendra du temps, certes, mais moins de temps que de faire n'importe quoi et devoir repasser dessus ensuite.

    Si je comprends bien tu veux afficher une selectbox, mais pour ça tu ne fais déjà pas de formulaire, et en plus tu fais une action de contrôleur uniquement pour la remplir ce qui est totalement insensé. Un contrôleur sert à recevoir une requête http, et renvoyer une réponse. Tu peux charger ton formulaire et le contenu de ta selectbox, ainsi que tous tes autres champs, ainsi que tout le reste de la page en deux ou trois lignes dans ton contrôleur. Tout simplement parce que ce n'est pas lui qui doit faire :
    - La construction du formulaire
    - La requête pour peupler ta selectbox
    - Le rendu du contenu de la selectbox

    Voilà l'aide la plus précieuse qu'il est possible de te donner actuellement : la documentation officielle. C'est indispensable, tu n'y arriveras pas si tu ne la lis pas. http://symfony.com/doc/current/index.html

    ++

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Nico_F, mon héros.

    Juste pour t'assurer que Nico a raison. N'hésites pas à nous poser des questions içi si tu as des problèmes à comprendre le mvc ou le fonctionnement global de symfony2

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    merci de vos réponses,
    je sais bien que c'est du bricole que j'ai fait la, j'ai essayé avec Doctrine, les entités, les forms types et autres mais je n'en suis pas parvenu, c'est pourquoi j'ai essayé quelque chose qui je pensais marcherait dans un premier temps.

    En fait mon objectif est de faire une suite de select box qui se charge les unes en fonction des autres, des chained select, je l'ai fait avec du php simple et du jquery et de l'ajax mais j'essaie de le faire avec symfony et j'y parvient pas.
    pourrait je avoir quelques conseils de votre part?

  5. #5
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Oui : commence peut-être par t'entrainer avec des cas moins complexes que celui que tu exposes afin de comprendre le fonctionnement du framework.

    Vouloir migrer sous Symfony est louable mais il faut que le jeu en vaille la chandelle : si tu ne peux pas te permettre de "perdre du temps" avec des exemples bateau pour te former, il ne faut peut-être pas te lancer dans quelque chose d'aussi chronophage que l'apprentissage d'un framework.

    Par contre si tu te prends une petite semaine pour comprendre le découpage des couches, l'utilisation d'un ORM, et le rôle de chaque composant du framework, tu ne seras pas expert Symfony pour autant mais tu seras capable de faire quelque chose de plus cohérent et gagner aussi bien en performance qu'en temps de développement par la suite.

    Pour réaliser ce que tu veux avec Symfony voici quelques-uns des pré-requis si tu veux faire ça à peu près proprement.

    Quel que soit le cas d'utilisation, il faut que tu saches au moins ce que fait chaque élément d'une architecture MVC. Ensuite effectivement pour un formulaire dynamique tu auras besoin de javascript. Il faut que tu maitrises la construction d'un formulaire (les FormType dans Symfony), le traitement du formulaire et la validation (plus complexe qu'un cas classique avec ton scénario), le système de requêtes avec Doctrine (QueryBuilder et/ou langage DQL), les contrôleurs et le protocole HTTP (Request/Response), l'exposition des routes Symfony à ton javascript ce qui n'est pas possible de manière simple à l'intérieur d'un fichier .js à moins d'utiliser un bundle externe.

    Je m'arrête là pour ne pas te décourager car Symfony est un outil fabuleux, mais qui demande un gros travail d'apprentissage auquel on ne peut malheureusement (ou heureusement) pas échapper. Tu pourrais remplacer tous ces appels javascripts par un formulaire sous forme d'assistant (ne serait-ce que pour te faire la main avec tous ces concepts).

    Une chose après l'autre et un problème complexe à la fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Stocker le résultat d'une fonction d' excel dans une variable en vba
    Par zak-mouk dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/06/2015, 13h02
  2. Réponses: 3
    Dernier message: 30/11/2006, 06h25
  3. Réponses: 6
    Dernier message: 02/10/2006, 12h13
  4. Récupérer le résultat d'une fonction dans une balise html
    Par Hayato dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/06/2006, 17h04
  5. Réponses: 6
    Dernier message: 08/06/2006, 10h07

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