Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:demarrer_un_projet_web_avec_symfony [Le 12/04/2010, 03:00] – Ajour de MVC Lami | tutoriel:demarrer_un_projet_web_avec_symfony [Le 11/09/2022, 12:23] (Version actuelle) – Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) moths-art | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | {{tag> |
| ---- | ---- | ||
| + | <note important> | ||
| ====== Démarrer un projet Web avec Symfony ====== | ====== Démarrer un projet Web avec Symfony ====== | ||
| + | <note important> | ||
| - | Pour la première partie de ce tutoriel, c'est mon expérience de la mise en oeuvre | + | Pour la première partie de ce tutoriel, c'est mon expérience de la mise en œuvre |
| - | J' | + | J' |
| Comme je souhaitais produire un modèle générique de base pour mes propres besoins éventuels, j'ai adapté les exemples du tutoriel pour un projet générique que je nomme Projet01. Cela m'a poussé à toujours bien comprendre les étapes, procédures et commandes, pour que le tout soit cohérent et bien sûr fonctionnel pour mes futurs projets. Je ne suis pas certain d' | Comme je souhaitais produire un modèle générique de base pour mes propres besoins éventuels, j'ai adapté les exemples du tutoriel pour un projet générique que je nomme Projet01. Cela m'a poussé à toujours bien comprendre les étapes, procédures et commandes, pour que le tout soit cohérent et bien sûr fonctionnel pour mes futurs projets. Je ne suis pas certain d' | ||
| Bon concert ! | Bon concert ! | ||
| + | |||
| ===== Introduction ===== | ===== Introduction ===== | ||
| Ligne 25: | Ligne 27: | ||
| ==== Installer un serveur Apache ==== | ==== Installer un serveur Apache ==== | ||
| - | Installer les paquets pour le serveur Apache avec la commande suivante dans un terminal | + | [[:tutoriel: |
| - | + | ||
| - | sudo aptitude install | + | |
| - | + | ||
| - | Si un mot de passe est demandé, entrer votre mot de passe d' | + | |
| Vérification du fonctionnement d' | Vérification du fonctionnement d' | ||
| Ligne 47: | Ligne 45: | ||
| ==== Installer MySQL ==== | ==== Installer MySQL ==== | ||
| - | Installation des paquets pour le serveur de base de données MySQL avec la commande suivante dans un terminal : | + | [[: |
| - | + | ||
| - | sudo aptitude install mysql-server | + | |
| À la fin de l' | À la fin de l' | ||
| Ligne 57: | Ligne 53: | ||
| Enregistrer ce nouveau mot de passe pour ce nouveau compte "MySQL Root" pour le retrouver au besoin. | Enregistrer ce nouveau mot de passe pour ce nouveau compte "MySQL Root" pour le retrouver au besoin. | ||
| - | Si cela n'est pas déjà dans votre habitude, je vous recommande d'enregistre | + | Si cela n'est pas déjà dans votre habitude, je vous recommande d'enregistrer |
| Par exemple, pour le mot de passe de "MySQL Root", j'ai les lignes suivantes dans mon fichier | Par exemple, pour le mot de passe de "MySQL Root", j'ai les lignes suivantes dans mon fichier | ||
| Ligne 67: | Ligne 63: | ||
| ==== Installer PHP ==== | ==== Installer PHP ==== | ||
| - | Installation des paquets pour la programmation en PHP5 : | + | [[:tutoriel: |
| - | + | ||
| - | sudo aptitude install | + | |
| Éditer le fichier apache2.conf pour y ajouter le nom (adresse) du serveur : | Éditer le fichier apache2.conf pour y ajouter le nom (adresse) du serveur : | ||
| Ligne 202: | Ligne 196: | ||
| ATTENTION : Pendant l' | ATTENTION : Pendant l' | ||
| - | Installez | + | [[: |
| - | + | ||
| - | sudo aptitude install phpmyadmin | + | |
| Pour vérifier le bon fonctionnement de PhpMyAdmin, rendez-vous à l'URL : | Pour vérifier le bon fonctionnement de PhpMyAdmin, rendez-vous à l'URL : | ||
| http:// | http:// | ||
| + | | ||
| + | si vous tombez sur une page (not found), Tapez la command | ||
| + | |||
| + | sudo kate / | ||
| + | |||
| + | et ajoutez à la fin un nouveau ligne | ||
| + | |||
| + | Include / | ||
| + | |||
| Vous arriverez alors sur la page d' | Vous arriverez alors sur la page d' | ||
| Ligne 218: | Ligne 219: | ||
| Remarque : si votre compte est dupont ne pas mettre dupont comme utilisateur, | Remarque : si votre compte est dupont ne pas mettre dupont comme utilisateur, | ||
| - | Si tout s'est bien passé, vous devriez être connecté à PhpMyAdmin et pouvoir créer et gérer vos bases de données. | + | - Si tout s'est bien passé, vous devriez être connecté à PhpMyAdmin et pouvoir créer et gérer vos bases de données. |
| + | - Si vous arrivez pas à vous connecter à PhpMyAdmin il faut créer un lien symbolique vers MyPhpAdmin, il faut juste faire la commande suivante: " sudo ln -s / | ||
| Il existe déjà deux bases de données, n'y touchez pas. Elles servent au bon fonctionnement de MySQL. | Il existe déjà deux bases de données, n'y touchez pas. Elles servent au bon fonctionnement de MySQL. | ||
| Ligne 259: | Ligne 260: | ||
| ==== Installer Symfony ==== | ==== Installer Symfony ==== | ||
| - | Installation | + | [[: |
| - | Pour le PHP, dans un terminal, entrer la commande : | + | Pour configurer Symfony avec PEAR, entrer les commandes : |
| - | + | ||
| - | sudo aptitude install php5-symfony php-pear php5-cli php5-xsl | + | |
| - | + | ||
| - | pour installer et configurer Symfony avec PEAR, entrer les commandes : | + | |
| sudo pear channel-discover pear.symfony-project.com | sudo pear channel-discover pear.symfony-project.com | ||
| Ligne 271: | Ligne 268: | ||
| sudo pear install symfony/ | sudo pear install symfony/ | ||
| - | Si tout s’est bien passé, vous aurez le message suivant : | + | Si tout s'est bien passé, vous aurez le message suivant : |
| - | install ok: channel:// | + | install ok: channel:// |
| + | |||
| + | Tapez cette comand dans le terminal : | ||
| + | |||
| + | sudo pear install --alldeps http:// | ||
| Nous avons un premier niveau d'aide pour Symfony avec la commande suivante : | Nous avons un premier niveau d'aide pour Symfony avec la commande suivante : | ||
| Ligne 290: | Ligne 291: | ||
| Pour notre exemple, nous créons le projet " | Pour notre exemple, nous créons le projet " | ||
| + | |||
| + | sudo mkdir / | ||
| Chez moi, cela pourrait donner comme chemin de dossier ce qui suit : | Chez moi, cela pourrait donner comme chemin de dossier ce qui suit : | ||
| Ligne 295: | Ligne 298: | ||
| / | / | ||
| - | Créer dès maintenant le dossier du projet01 avec la commande suivante dans un terminal : | ||
| - | |||
| - | mkdir projet01 | ||
| Si vous procédez différemment, | Si vous procédez différemment, | ||
| Ligne 317: | Ligne 317: | ||
| === Création du serveur virtuel === | === Création du serveur virtuel === | ||
| - | Créez un nouveau fichier " | + | Créez un nouveau fichier " |
| sudo kate / | sudo kate / | ||
| Ligne 340: | Ligne 340: | ||
| </ | </ | ||
| </ | </ | ||
| + | |||
| Activons ce nouveau domaine avec la commande suivante dans un terminal : | Activons ce nouveau domaine avec la commande suivante dans un terminal : | ||
| sudo a2ensite projet01 | sudo a2ensite projet01 | ||
| + | |||
| + | | ||
| Pour que ces changements soient pris en compte, il faut relancer le serveur Apache avec la commande suivante : | Pour que ces changements soient pris en compte, il faut relancer le serveur Apache avec la commande suivante : | ||
| Ligne 361: | Ligne 362: | ||
| Créons maintenant le canevas de base avec Symfony avec la commande suivante dans le terminal : | Créons maintenant le canevas de base avec Symfony avec la commande suivante dans le terminal : | ||
| - | symfony generate: | + | |
| + | |||
| + | Si vous avez un message d' | ||
| Cette commande génère la structure par défaut des répertoires et crée les fichiers nécessaires d'un projet symfony. | Cette commande génère la structure par défaut des répertoires et crée les fichiers nécessaires d'un projet symfony. | ||
| Ligne 380: | Ligne 383: | ||
| === Création d' | === Création d' | ||
| + | |||
| + | D’abord assurez vous que vous situés sous le répertoire projet symfone, dans notre cas projet01 : | ||
| + | |||
| + | cd / | ||
| Créons l' | Créons l' | ||
| - | symfony generate: | + | |
| Cette commande crée la structure par défaut des répertoires de l' | Cette commande crée la structure par défaut des répertoires de l' | ||
| Ligne 484: | Ligne 491: | ||
| Pour indiquer à Symfony la base de données que nous utilisons pour le projet, entrons la commande suivante <B>en prenant soin de modifier la commande. Si votre nom d' | Pour indiquer à Symfony la base de données que nous utilisons pour le projet, entrons la commande suivante <B>en prenant soin de modifier la commande. Si votre nom d' | ||
| - | symfony configure: | + | |
| Avec la description de la base de données dans le fichier schema.yml, nous pouvons utiliser les tâches intégrées de l'ORM pour générer les déclarations SQL nécessaires pour créer des tables : | Avec la description de la base de données dans le fichier schema.yml, nous pouvons utiliser les tâches intégrées de l'ORM pour générer les déclarations SQL nécessaires pour créer des tables : | ||
| Ligne 963: | Ligne 970: | ||
| </ | </ | ||
| - | Dans ce code, la boucle foreach parcourt la liste d' | + | Dans ce code, la boucle foreach parcourt la liste d' |
| Souvenez-vous, | Souvenez-vous, | ||
| Ligne 994: | Ligne 1001: | ||
| === Le template de la page d'un job === | === Le template de la page d'un job === | ||
| - | Personnalisons maintenant le template de la page d'un job. Ouvrez le fichier showSuccess.php avec la commande | + | Personnalisons maintenant le template de la page d'un job. Ouvrez le fichier showSuccess.php avec la commande |
| kate apps/ | kate apps/ | ||
| Ligne 1127: | Ligne 1134: | ||
| La description d'un job utilise le helper simple_format_text() afin de formater le texte en HTML, en remplaçant notamment les retours chariots par des balises <br />. Comme ce helper fait parti du groupe Text et que celui-ci n'est pas chargé par défaut, nous le chargeons manuellement en utilisant le helper use_helper(). | La description d'un job utilise le helper simple_format_text() afin de formater le texte en HTML, en remplaçant notamment les retours chariots par des balises <br />. Comme ce helper fait parti du groupe Text et que celui-ci n'est pas chargé par défaut, nous le chargeons manuellement en utilisant le helper use_helper(). | ||
| - | ==== Les Slots ==== | ||
| - | |||
| - | Actuellement, | ||
| - | |||
| - | Avec Symfony, quand une zone du layout dépend du template à afficher, vous devez utiliser un slot. | ||
| - | |||
| - | Ajoutez un slot au layout afin de rendre le titre dynamique. Ouvrez le fichier avec la commande : | ||
| - | |||
| - | kate apps/ | ||
| - | |||
| - | Remplacez la ligne qui commence par : | ||
| - | |||
| - | < | ||
| - | |||
| - | Par la ligne : | ||
| - | |||
| - | < | ||
| - | |||
| - | Chaque slot est identifié par un nom (ici title) et peut être affiché en utilisant le helper include_slot(). Maintenant, au début du template showSuccess.php, | ||
| - | |||
| - | kate apps/ | ||
| - | |||
| - | Ajoutez au début du fichier, la ligne : | ||
| - | |||
| - | <?php slot(' | ||
| - | |||
| - | Si le titre est complexe à définir, le helper slot() peut aussi être utilisé dans un block de code : | ||
| - | |||
| - | < | ||
| - | // apps/ | ||
| - | <?php slot(' | ||
| - | <?php echo sprintf(' | ||
| - | <?php end_slot(); ?> | ||
| - | </ | ||
| - | |||
| - | Pour certaines pages, comme la page d' | ||
| - | |||
| - | kate apps/ | ||
| - | |||
| - | Remplacez la ligne qui commence par : | ||
| - | |||
| - | < | ||
| - | |||
| - | Par la ligne : | ||
| - | |||
| - | < | ||
| - | < | ||
| - | <?php if (!include_slot(' | ||
| - | Projet01 - Your best job board | ||
| - | <?php endif; ?> | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | Le helper include_slot() renvoie true si le slot a été défini. Ainsi, si vous spécifiez une valeur pour le slot title depuis un template, c'est cette valeur qui sera utilisée comme titre, sinon, ce sera le titre par défaut spécifié dans le layout. | ||
| - | |||
| - | Nous avons déjà vu quelques helpers commençant par include_. Ces helpers renvoient du code HTML et dans la plupart des cas ont un helper get_ permettant de renvoyer uniquement le contenu : | ||
| - | |||
| - | <?php include_slot(' | ||
| - | <?php echo get_slot(' | ||
| - | | ||
| - | <?php include_stylesheets() ?> | ||
| - | <?php echo get_stylesheets() ?> | ||
| - | |||
| - | La page d'un job est générée grâce à l' | ||
| - | |||
| - | < | ||
| - | class jobActions extends sfActions | ||
| - | { | ||
| - | public function executeShow(sfWebRequest $request) | ||
| - | { | ||
| - | $this-> | ||
| - | $this-> | ||
| - | } | ||
| - | |||
| - | // ... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Comme dans l' | ||
| - | |||
| - | Le modèle de classe généré par Symfony contient un grand nombre de méthodes utiles pour interagir avec les objets du projet. Prenez un peu de temps pour parcourir le code situé dans le dossier lib/om/ et découvrir toute la puissance embarqué dans ces classes. | ||
| - | |||
| - | Si le job n' | ||
| ===== Liens utiles ===== | ===== Liens utiles ===== | ||
| Ligne 1222: | Ligne 1146: | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| - | * [[http:// | + | * [[http:// |
| Configuration SVN pour un projet Symfony]] | Configuration SVN pour un projet Symfony]] | ||
| - | * [[http:// | + | * [[https:// |
| * [[http:// | * [[http:// | ||
| Ligne 1233: | Ligne 1157: | ||
| ---- | ---- | ||
| - | // | + | // |
