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 :

Tutoriel pour débuter avec Symfony2 [Tutoriel]


Sujet :

Symfony PHP

  1. #81
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    en complément de mini base, je m’embête pas j'utilise le sqlite, c'est très simple à mettre en place (en plus avec Doctrine)
    J'ai jamais essayé, quelles sont les avantages que tu y trouves ?

    Edit : S'entend par rapport à du XML (interfaçage, stream, accès direct depuis un autre serveur, gestion des droits par htaccess,...) et à MySQL

  2. #82
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Cybeber Voir le message
    J'ai jamais essayé, quelles sont les avantages que tu y trouves ?
    c'est une base SQL mais dans un fichier, donc pas besoin de serveur

  3. #83
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    c'est une base SQL mais dans un fichier, donc pas besoin de serveur
    Désolé, j'ai édité alors que tu répondais à ma question précédente, y'a quelques utilisation du XML qui sont bien pratique quand même

  4. #84
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    tu peux faire tout ça avec le sqlite puisque que le xml dans le fond c'est que "un fichier" (pas convaincu pour le stream par contre), mais si ton but c'est la partage niveau API le plus simple encore uen fois seras le sqlite, ca prendra moins de temps de recréé un fichier XML suivant les données, (avec ton XML ça sera tout la table ou rien, ou alors gros traitement pour receer le XML voulu)

    pour des fichier de config y'a pas de soucis, mais pour une utilisation type base de données autant utiliser ... une base de données


  5. #85
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    tu peux faire tout ça avec le sqlite puisque que le xml dans le fond c'est que "un fichier" (pas convaincu pour le stream par contre), mais si ton but c'est la partage niveau API le plus simple encore uen fois seras le sqlite, ca prendra moins de temps de recréé un fichier XML suivant les données, (avec ton XML ça sera tout la table ou rien, ou alors gros traitement pour receer le XML voulu)

    pour des fichier de config y'a pas de soucis, mais pour une utilisation type base de données autant utiliser ... une base de données

    Merci bien du conseil ! Je vais voir si je peux faire tourner ça sur mon hébergement partagé, dans tous les cas ce sera plus rapide que de développer une prise en charge du XML et, dans un premier temps, ça pourrait faire l'affaire... Peut-être que d'ici à ce que j'ai un besoin indispensable de XML, OXM sera achevé
    Bref, merci !

  6. #86
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut Symfony 2 + Doctrine + sqlite
    Un premier retour sur l'utilisation de sqlite , vu que la doc de sf2 est assez légère à ce sujet, on peut rencontrer des problèmes pour insérer des données en base.
    Donc pour permettre la génération de la base et des tables en ligne de commande avec sqlite, il faut rajouter :

    Dans parameters.ini
    database_path=%kernel.root_dir%/db/ma_base.sqlite

    Dans config.yml - partie doctrine:dbal:
    path: %database_path%

    En l’occurrence j'ai choisi de la placer dans /db/ parce que je devrais en avoir quelques unes, mais libre à vous de choisir le dossier qui vous convient.

    (au passage, le projet OXM avance, des ajouts on eu lieu le 18/11/2011, ça me plait bien ça aussi !)

  7. #87
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Par défaut
    Merci pour le tutoriel sur Symfony.

    Je repose ici ce que j'ai dit sur ton profil, car plus logique...

    Je viens rapporter un problème dans le chapitre V-A. du 2ème tuto.
    Chez moi, la page ne veut pas se charger tant que les lignes de routing.yml ne sont pas :
    myapp_choisir_langue:
    pattern: /choisir-langue/{langue}
    defaults: { _controller: MyAppFilmothequeBundleefault:choisirLangue }

    au lieu de
    myapp_choisir_langue:
    path: /choisir-langue/{langue}
    controller: { _controller: MyAppFilmothequeBundleefault:choisirLangue }


    EDIT : Dans ce chapitre, après modification des fichier yml, je me refais engueuler par Symfony pour la même raison


    Autre problème :
    Lors de la création du premier utilisateur, une erreur est arrivé sur la console.
    J'ai trouvé ce lien qui offre une solution qui fonctionne.

    http://konradpodgorski.com/blog/155/...d-for-account/

  8. #88
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Par défaut Acteur.php Fatal error
    Merci Djay pour ton tuto. J'avance pas à pas, et j'en suis justement à cette ligne de commande : php app/console doctrine:generate:entities MyApp.

    En ce qui me concerne la réponse obtenue est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error : Namespace declaration statement has to be the very first statement in the script in ..mon_chemin..\Acteur.php on line 3
    Début de Acteur.php (sans surprise normalement, vu que je n'ai fait qu'un copie colle)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    namespace MyApp\FilmothequeBundle\Entity;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Validator\Constraints as Assert;
     
    /**
     * @ORM\Entity
     */
    class Acteur
    {
    Merci par avance pour votre aide,

  9. #89
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    regarde si t'es pas en UTF-8 avec BOM

  10. #90
    Invité de passage
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1
    Par défaut
    Bonjour aux Symfoniens,

    Tout d'abord merci pour ce tuto clair
    J'ai quand même quelques questions au niveau des formulaires et de leur gestion vis à vis des entity.

    Ex de l'action du CRUD généré par symfony:

    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
     
        public function createAction()
        {
            $entity  = new User();
            $request = $this->getRequest();
            $form    = $this->createForm(new UserType(), $entity);
            $form->bindRequest($request);
     
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($entity);
                $em->flush();
     
                return $this->redirect($this->generateUrl('user_show', array('id' => $entity->getId())));
     
            }
     
            return $this->render('DoodleUserBundle:User:new.html.twig', array(
                'entity' => $entity,
                'form'   => $form->createView()
            ));
        }
    Je n'arrive pas à comprendre à quel moment $entity est rempli par le POST envoyé par le formulaire. Et parviens donc à récupérer les infos.
    J'ai remarqué que cela se produit lors de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form->bindRequest($request);
    qui set les valeurs à l'entity via le form ?


    Qu'en est-il des valeurs par défaut ? Comment les setter et surtout où ?
    J'imagine que le mieux est de placer tout ça dans l'entity mais de quelle manière ? Apparemment il n'y a pas de constructeur pour cette classe.


    Autre chose je voulais sha1 automatiquement le password via mon entity User.

    J'ai donc modifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        /**
         * Set password
         *
         * @param string $password
         */
        public function setPassword($password)
        {
            $this->password = sha1($password);
        }
    Mais le champ reste vide en db. (une valeur string en dur passe très bien)



    Merci pour vos conseils et explications !

  11. #91
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut Problème pour éditer un acteur.
    Salut,

    je fais remonter le sujet

    Tout d'abord merci pour ce tuto bien détaillé.

    J'ai un petit soucis lors de la création des actions de Création/Modification des acteurs.

    En effet, le code donné pour le controller ActeurController ne me remonte pas les infos des acteurs lorsque je suis en modification avec un url du type : http://monurl/acteur/modifier/1

    Sachant que j'ai bien des enregistrements dans la base de données.

    Pour l'ajout et la suppression aucun soucis mais pas de remontée des valeurs en cas de modification

    Quelqu'un a une idée ?

  12. #92
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 16
    Par défaut
    Merci pour ce Tuto - partie 1
    Quelques rectifications qui proviennent certainement de l'évolution de Symfony 2
    - dans les fichiers Categorie.php, Acteur.php et Film.php : lenght="250" doit être modifié en lenght=250 (enlever les "" pour des variables integer) avant de pouvoir créer les tables via la commande console.
    - dans le fichier Form/ActeurForm.php il faut remplacer chaque fois FormBuilder par FormBuilderInterface
    Tuto effectué le 25/02/2013

  13. #93
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Par défaut
    Bonsoir,

    Merci pour ce tuto pratique

    Le tutoriel a pris un peu la poussière, mais il peut se faire sans soucis avec la version actuelle de Symfony (2.2.1).

    Par contre il est plus facile d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return $this->render('MyAppFilmothequeBundle:Default:index.html.twig');
    à place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     return $this->container->get('templating')->renderResponse('MyAppFilmothequeBundle:Default:index.html.twig');
    De même avec getEntityManager() utilisez plutôt getManager()

    Chez moi j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class ActeurController extends Controller
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class ActeurController extends ContainerAware
    Il y a-t-il une différence ?

  14. #94
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,


    la classe Symfony\Bundle\FrameworkBundle\Controller\Controller hérite de la classe Symfony\Component\DependencyInjection\ContainerAware
    en ajoutant des méthode pour utiliser les services les plus courants du container
    il suffit d'en parcourir le code:
    https://github.com/symfony/symfony/b...oller.php#LC34

    On peut donc utiliser l'une ou l'autre des méthodes cela ne change rien à la logique applicative.

    Dans ce tutoriel, ne pas utiliser la classe Controller de Symfony, permet de mettre en évidence le role central que joue le container d'injection de dépendance dans une application Symfony.
    C'est plus pédagogique en somme!

  15. #95
    Nouveau candidat au Club
    Homme Profil pro
    Informatique
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Par défaut Solutions aux problèmes
    Avec la derniere version symfony 2.6 :

    Voici quelques solutions aux problèmes qu'on peut rencontrer :

    Problème :
    Solution :
    Problème lors de la génération automatique des accesseurs :

    C:\wamp\www\Symfony2>php app/console doctrine:generate:entities MyApp
    Generating entities for namespace "MyApp"



    [Doctrine\Common\Annotations\AnnotationException]
    [Type Error] Attribute "length" of @ORM\Column declared on property MyApp\F
    ilmothequeBundle\Entity\Acteur::$nom expects a(n) integer, but got string.



    doctrine:generate:entities [--path="..."] [--no-backup] name
    Enlever les "" du length dans tous les entités

    @ORM\Column(type="string",length="255")
    @ORM\Column(type="string",length=255)
    C:\wamp\www\Symfony2>php app/console doctrine:generate:entities MyApp
    Generating entities for namespace "MyApp"



    [Doctrine\Common\Annotations\AnnotationException]
    [Semantical Error] The annotation "@Symfony\Component\Validator\Constraints
    \MinLength" in property MyApp\FilmothequeBundle\Entity\Acteur::$nom does no
    t exist, or could not be auto-loaded.



    doctrine:generate:entities [--path="..."] [--no-backup] name
    Le validator "MinLength" n'existe plus dans la version symfony 2.6

    Donc il faut remplacer "MinLength(3)" par "Length(min=3)" dans tous les entités

    @Assert\MinLength(3)
    @Assert\Length(min = 3)
    Problème lors de la création des formulaires :

    Compile Error: Declaration of MyApp\FilmothequeBundle\Form\ActeurForm::buildForm() must be compatible with Symfony\Component\Form\FormTypeInterface::buildForm(Symfony\Component\Form\FormBuilderInterface $builder, array $options) in C:\wamp\www\Symfony2\src\MyApp\FilmothequeBundle\Form\ActeurForm.php line 8
    Il faut utiliser "FormBuilderInterface" à la place de "FormBuilder"

    use Symfony\Component\Form\FormBuilder;
    public function buildForm(FormBuilder $builder, array $options)
    use Symfony\Component\Form\FormBuilderInterface;
    public function buildForm(FormBuilderInterface $builder, array $options)
    Attempted to call method "bindRequest" on class "Symfony\Component\Form\Form" in C:\wamp\www\Symfony2\src\MyApp\FilmothequeBundle\Controller\ActeurController.php line 30.
    La méthode "bindRequest" à été remplacé par "submit()" qui sera lui supprimé dans la version 3.0 donc il faut utiliser la méthode "handleRequest()"

    if ($request->getMethod() == 'POST')
    {
    $form->bindRequest($request);
    ...
    }
    if ($request->isMethod('POST'))
    {
    $form->handleRequest($request);
    ...
    }
    Source : http://symfony.com/fr/doc/current/co...ct_submit.html


  16. #96
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut
    Salut les gens, j'aurais besoin d'aide

    J'ai réussis à me rendre jusqu'aux templates du tutoriel, sauf que je me rend compte en exécutant le code que la partie sur les bases de données n'a pas fonctionnée. Les deux catégories que sont Comédie et Science-fiction ne s'affiche pas. Je présume qu'elles n'ont pas été créées, d'autant plus que le message « Aucune catégorie n'a été trouvée » est affiché.

    Voici ce que le code me génère :

    Attempted to call method "setNom" on class "MyApp\FilmothequeBundle\Entity\Categorie".
    500 Internal Server Error - UndefinedMethodException

    Et voici le code de ma fonction indexAction

    public function indexAction() {
    $em = $this->container->get('doctrine')->getEntityManager();

    $categorie1 = new Categorie();
    $categorie1->setNom('Comédie');
    $em->persist($categorie1);

    $categorie2 = new Categorie();
    $categorie2->setNom('Science-fiction');
    $em->persist($categorie2);

    $em->flush();

    $message = 'Catégories créées avec succès';

    return $this->container->get('templating')->renderResponse('MyAppFilmothequeBundleefault:index.html.twig',
    array('message' => $message)
    );
    }

    Je n'arrive pas à saisir le problème, pourtant j'ai suivis les instructions à la lettre... Pouvez me filer un coup de pouce?

  17. #97
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Par défaut
    Attempted to call method "setNom" on class "MyApp\FilmothequeBundle\Entity\Categorie".
    500 Internal Server Error - UndefinedMethodException
    En gros quoi ... t'as une methode setNom dans l'entity Categorie ? non alors tu n'as pas du faire le php app/console doctrine:generate:entities qui va bien ....

    Les tutos c'est inutile si tu ne cherches pas a comprendre ce que tu fais !

  18. #98
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut
    Comment se sentir con en une seule et simple étape... Allez savoir pourquoi j'avais complètement zappé cette ligne de commande. Probablement que j'ai été distrait par quelque chose et que je ne l'ai pas vu... C'est pas comme si je ne connaissais pas le sujet et que j'avais pas fait des recherches pour régler les bugs, car j'ai maintenant terminé le tutoriel et mon programme fonctionne super bien.

    Merci en tout cas >_>

  19. #99
    Invité de passage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 1
    Par défaut Flush
    Salut à tous,

    j'ai moi aussi dû m'adapter aux modifications à faire du fait que la version de Symphony du tuto est plus ancienne que la dernière version..
    Heureusement grace à vos conseils je m'en suis sorti

    J'ai une chose toutefois qui ne marche pas chez moi: Dans la partie VII-D. Enregistrement d'une première donnée il est écrit que "Pour éviter de créer ces catégories chaque fois que vous accédez à cette URL, vous pouvez mettre la ligne $em->flush(); en commentaire ou bien renommer la fonction indexAction() pour enregistrerCategorie()." toutefois dans mon cas si je recharge la page X fois à chaque fois il me réinsère les meme catégories créant inévitablement des doublons...

    D'après la doc officielle de doctrine cette fonction évite en effet les doublons mais dans mon cas ça ne marche pas. L'un d'entre vous aurait-il eu ce problème?

    Quelqu'un sait par hasard où est le problème? J'ai suivi scrupuleusement les indications du tuto (=j'ai rien de custom)

    Merci d'avance

  20. #100
    Invité de passage
    Homme Profil pro
    etudiant
    Inscrit en
    Mars 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 1
    Par défaut Symfony 3
    Hello,
    J'ai essaye le tutoriel (http://j-place.developpez.com/tutori...avec-symfony2/).
    J'utilise la verison 3.0.0
    Cependant, j'ai eu une erreur :
    CRITICAL - Fatal Error: Class 'Symfony\Component\DependencyInjection\ContainerAware' not found
    CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\ClassNotFoundException: "Attempted to load class "ContainerAware" from namespace "Symfony\Component\DependencyInjection". Did you forget a "use" statement for another namespace?" at /var/www/html/symfony/src/MyApp/FilmothequeBundle/Controller/DefaultController.php line 11
    ContainerAware a disparu sur la version 3 ?
    Comment je peut faire pour contourner le problème ?

Discussions similaires

  1. Cours et tutoriels pour débuter avec SAP
    Par birdy85 dans le forum SAP
    Réponses: 22
    Dernier message: 14/09/2016, 21h37
  2. Quel livre ou tutoriel pour débuter avec DOT.NET
    Par trent94 dans le forum Débuter
    Réponses: 16
    Dernier message: 09/02/2012, 16h46
  3. Tutoriel pour débuter rapidement avec les Windows.Forms ?
    Par Leelith dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/12/2008, 14h25
  4. [Portlet] Tutoriel pour débuter avec les portlets
    Par AbdeL02 dans le forum Portails
    Réponses: 7
    Dernier message: 20/08/2008, 00h24

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