Initialisation d’un projet symfony/doctrine sous subversion

La première phase consiste à créer notre dossier http. Mon path par défaut pour cette exemple est /www/virtualhosts. Les noms entre crochets sont utilisés pour un élément variable.

mkdir /www/virtualhosts/[projet]

Nous allons maintenant nous déplacer dans ce dossier et le déchargement de la base depuis subversion

cd /www/virtualhosts/[projet]
svn co http://[svn.server]/repos/[project]/trunk .

Nous pouvons maintenant installer le framework symfony dans notre dossier http

/www/svn/symfony/1.2/data/bin/symfony generate:project [NomDuProjet]

Nous allons maintenant configurer la base de donnée avec doctrine:

./symfony configure:database --name=doctrine --class=sfDoctrineDatabase "mysql:host=localhost;dbname=database" user pass

Modification du fichier databases.yml:

cd config/
Suppression des lignes concernant Propel dans le fichier databases.yml
(ne laisser que la config doctrine)

Nous renommons le fichier databases.yml avant de l’inclure dans le repository

mv databases.yml databases.yml_dist

Activation du plugin sfDoctrinePlugin

Ouvrir le fichier ProjectConfiguration.class.php et changer sfDoctrinePlugin par sfPropelPlugin

Suppression des fichiers inutiles

rm -fr propel.ini
rm -fr schema.yml

Création du dossier doctrine qui va recevoir les fichiers schéma

mkdir doctrine

Suppression du dossier sfPropelPlugin du dossier web et activation du dossier sfDoctrinePlugin

cd ../web/
unlink sfPropelPlugin
cd ..
./symfony plugin:publish-assets

Prochaine étape, vider les dossiers cache et log

rm -fr cache/*
rm -fr log/*

Ajout de notre projet dans subversion

svn add *

Nous allons ignorer les fichiers des dossiers cache et log

svn pe svn:ignore cache
> *
svn pe svn:ignore log
> *

Nous mettons également le fichier databases.yml en ignore pour ne pas tenir compte de la configuration locale

svn pe svn:ignore config
> databases.yml

Création du dossier sql recevant les fichiers sql de doctrine. Je considère que ces fichiers ne sont pas à versionner. Nous allons également les ignorer.

mkdir data/sql
svn pe svn:ignore data/sql
> *

Nous allons inclure symfony dans notre projet

svn mkdir lib/vendor
svn pe svn:externals lib/vendor
> symfony http://svn.symfony-project.com/branches/1.2

Transfert de notre structure initiale sur le serveur subversion

svn ci -m 'Projet initial'

Nous allons maintenant lancer un update pour charger le framework symfony qui a été précédemment accroché dans le dossier lib/vendor

svn up

Nous allons changer le chemin d’accès aux librairies symfony en modifiant le fichier ProjectConfiguration.class.php du dossier config du projet

Changer:
require_once '/www/svn/symfony/1.2/lib/autoload/sfCoreAutoload.class.php'
Par:
require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';

Nous allons publié notre modification sur le serveur subversion

svn ci -m "Changement de la configuration"

Il nous reste une dernière chose à faire pour que notre projet fonctionne. Nous allons copier le fichier databases.yml_dist et le renommer avant de le modifier pour tenir compte de notre configuration locale

cp config/databases.yml_dist config/databases.yml

Il ne reste plus qu’à initialiser notre application avant de pouvoir développer

./symfony generate:app frontend --csrf-secret=CrSfS3Cr3t --escaping-strategy=on

Ajout de l’application à subversion

svn add test/functional/frontend apps/frontend web/frontend_dev.php web/index.php

Publication sur le serveur subversion

svn ci -m "Initialisation de l'application frontend"

J’espère que cette démarche vous permettra de simplifier l’installation de vos projets. Je reste à votre disposition si vous avez des questions sur le sujet.

Références:
Le Framework Symfony
l’ORM Doctrine
Subversion

Share

Intégrer symfony dans un projet géré par subversion

Pour continuer dans la lancée du précédent article, je vais vous montrer comment intégrer les librairies de symfony directement dans votre projet. Pour cela, votre projet doit être sous subversion.

Nous allons intégrer la version 1.2 de symfony.

Avant de lancer ces commandes, assurez-vous que vous soyez à la racine de votre projet.

mkdir lib/vendor
svn pe svn:externals lib/vendor
symfony http://svn.symfony-project.com/branches/1.2
svn up

Vous avez maintenant toutes les bibliothèques de symfony dans votre projet.

Nous allons maintenant changer la configuration de notre projet pour pointer sur ces bibliothèques

// config/ProjectConfiguration.class.php
require_once(dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php');

Dès maintenant, vous avez un projet autonome (sandbox).

Share

Installer plusieurs versions de symfony sur votre machine

Une petite explication qui vous permettra d’installer plusieurs versions de symfony sur le même ordinateur. Ce tutorial est basé sur des commandes terminal. Si vous utilisez windows, je vous conseille d’utiliser TortoiseSVN.

Premièrement, nous allons construire notre réservoir symfony. Pour cet exemple, nous allons stocker les fichiers dans la structure /www

cd /www
mkdir -p svn/symfony
cd svn/symfony
mkdir 1.0 1.1 1.2

Après la création de la structure, nous allons décharger les diverses versions de symfony:

cd 1.0
svn co http://svn.symfony-project.com/branches/1.0 .
cd ../1.1
svn co http://svn.symfony-project.com/branches/1.1 .
cd ../1.2
svn co http://svn.symfony-project.com/branches/1.2 .

Vous êtes maintenant prêt à initialiser des projets.

Initialiser un projet en version 1.0

cd /www/virtualhosts
mkdir projet1.0
cd projet1.0
/www/svn/symfony/1.0/data/bin/symfony init-project monprojet10

Initialiser un projet en version 1.1

cd /www/virtualhosts
mkdir projet1.1
cd projet1.1
/www/svn/symfony/1.1/data/bin/symfony generate:project monprojet11

Initialiser un projet en version 1.2

cd /www/virtualhosts
mkdir projet1.2
cd projet1.2
/www/svn/symfony/1.2/data/bin/symfony generate:project monprojet12

Il vous suffit ensuite d’utiliser la commande symfony dans le root de votre projet.
Exemple de commande pour générer une nouvelle application (version 1.1 et 1.2)

./symfony generate:app frontend

Voilà. J’espère que les explications ci-dessous vous permettrons de développer vos projets selon la version de symfony que vous avez choisi.

Share

Assignation du langage dans la balise html

De base, symfony ne fourni pas une fonction de récupération du langage de l’interface utilisateur mais seulement la culture. Dans le layout par défaut, vous trouvez cette balise:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

Sur un site multilingue, cette information est très importante pour les robots de recherche. Elle permet de classer son contenu selon la langue affichée. Dans mon cas, j’utilise fr_CH comme culture par défaut et comme j’aimerai garder uniquement les deux premiers caractères, j’ai inséré une fonction dans la classe myUser.class.php se trouvant dans le dossier lib de l’application:

class myUser extends sfBasicSecurityUser
{
  ... 
  public function getLanguage()
  {
    $result = explode('_', $this->getCulture());
    return $result[0];
  }
  ...
}

Ensuite, il suffit de personnaliser la balise html avec la fonction ci-dessus:

<html xmlns="http://www.w3.org/1999/xhtml"
      xml:lang="<?php echo $sf_user->getLanguage(); ?>"
      lang="<?php echo $sf_user->getLanguage(); ?>">

J’espère que cette petite astuce vous servira…

Share