Skip to content
This repository has been archived by the owner on Nov 28, 2021. It is now read-only.

Bien commencer

Corentin edited this page Aug 11, 2014 · 22 revisions

Étape 0 : Pré-requis

Serveur php fonctionnel avec les modules suivants: php5-curl php5-gd php5-mysqlnd php5-apc

Étape 1 : cloner le dépot GIT

Pour utiliser le modèle des Pull Requests, vous devez faire un fork du dépôt dans votre compte github, en cliquant sur le bouton Fork en haut à droite du dépôt https://github.com/simde-utc/portail

Ensuite tapez la commande :

$ git clone git@github.com:*votre_username_github*/portail.git

Félicitations, vous avez le code !

Étape 2 : préparer votre espace de travail

Toutes les commandes sont a taper à la racine du dépôt.

Récupérer le code symfony :

$ git submodule update --init

Fixer les permissions :

$ mkdir log cache
$ php symfony project:permissions
$ chmod a+rwX plugins/sfTCPDFPlugin/lib/tcpdf/cache/

À faire après un clone et après toute installation de plugin :

$ php symfony plugin:publish-assets

Créer le fichier de configuration principal du site :

$ cp config/app.dist.yml config/app.yml

Ouvrir ce fichier et changer les paramètres qui doivent l'être. Notamment les variables current_semestre et dossier_assos. Il est recommandé de faire pointer cette dernière dans un sous-dossier documents de data.

Vider le cache (à faire régulièrement) :

$ php symfony cc

Étape 3 : le Virtual Host

Sous linux:

Voici un exemple de fichier de configuration pour apache :

$ sudo vim /etc/apache2/sites-available/portail 
 <VirtualHost *:80>
    ServerAdmin me@domain.com
    DocumentRoot "/home/.../portail/web"
    ServerName portail
    DirectoryIndex frontend_dev.php
  <Directory "/home/.../portail">
    AllowOverride All
    Require all granted
  </Directory>
  Alias /sf /home/.../portail/lib/vendor/symfony/data/web/sf
  <Directory "/home/.../portail/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

Sous MacOS:

$ sudo vim /etc/apache2/httpd.conf
Décommenter cette ligne
# Virtual hosts
  Include /private/etc/apache2/extra/httpd-vhosts.conf

$ sudo vim /etc/apache2/extra/httpd-vhosts.conf 
(Il faut ajouter un virtualhost pour localhost au début de fichier)
 <VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Library/WebServer/Documents/  
 </VirtualHost>

 <VirtualHost *:80>
    ServerAdmin me@domain.com
    DocumentRoot "/home/.../portail/web"
    ServerName portail
    DirectoryIndex frontend_dev.php
  <Directory "/home/.../portail">
    AllowOverride All
    Allow from All
  </Directory>
  Alias /sf /home/.../portail/lib/vendor/symfony/data/web/sf
  <Directory "/home/.../portail/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>    

-- Permettre de se connecter au site en tapant http://portail dans un navigateur :

$ cat /etc/hosts
...
127.0.0.1    portail
...

-- N'oubliez pas d'activer le Virtual Host :

$ sudo a2ensite portail

Puis de recharger la configuration d'Apache :

$ sudo /etc/init.d/apache2 reload
$ sudo apachectl restart (MacOS)

--

Étape 4 : la base de données

Le schéma se trouve dans config/doctrine/schema.yml

Configurer sa connexion

Les identifiants de connexion à la base se trouvent dans config/databases.yml

Un fichier d'exemple est donné : databases.dist.yml

$ cp config/databases.dist.yml config/databases.yml

Il vous suffit d'éditer la configuration pour votre base de données (il faut créer la base soi-même au préalable, symfony ne le fera pas tout seul).

Générer le code symfony

symfony génère des classes PHP à partir du fichier schema.yml. Pour générer ce code (models, forms, filters) :

$ php symfony doctrine:build --all-classes

Générer les tables dans la base de données

Une fois que la base a été créée, on peut créer l'ensemble des tables avec la commande :

$ php symfony doctrine:migrate

Cette commande permet aussi de mettre à jour la structure des tables lorsqu'un autre développeur effectue des changements sur le modèle.

Charger les données test

Le projet comporte quelques données de test pour ne pas commencer avec un site vide :

$ mysql -uroot -p simde < data/dump/dump_20130825.sql

simde est l'utilisateur MySQL, portail le nom de la base et le mot de passe doit être tapé.

Étape 5 : créer son premier module

Pour générer un module lié à une table il suffit d'exécuter la commande suivante, qui va créer plusieurs actions pour lister la table, voir un élément, éditer un élément, ajouter un élément et supprimer un élément.

$ php symfony doctrine:generate-module frontend module Objet

Vous pouvez aussi générer un module vide :

$ php symfony generate:module frontend module

N'oubliez pas de lire Convention et règles !

Troubleshoot

La connexion au cas ne fonctionne pas, et vous avez une erreur du genre Fatal error: Call to undefined function curl_init()

$ sudo apt-get install php5-curl
$ sudo service apache2 restart

Le web_debug toolbar n'affiche pas. Vérifiez les settings ci-dessous. Il faut qu'on soit bien dans le mode 'dev' et l'option web_debug soit actif.

/portail/web/index.php

  $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'dev', false);

/portail/apps/election/config
  dev:
    .settings:
      web_debug:true