-
Notifications
You must be signed in to change notification settings - Fork 23
Bien commencer
Serveur php fonctionnel avec les modules suivants: php5-curl php5-gd php5-mysqlnd php5-apc
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 !
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
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>
$ 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)
--
Le schéma se trouve dans config/doctrine/schema.yml
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).
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
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.
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é.
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 !
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