Installation du CMS Sonata Page

13 mai 2013

Voici comment installer le CMS Sonata Page à partir d’une installation neuve de Symfony. Ce tuto sera modifié régulièrement au fur et à mesure de mes découvertes :)

Le but est de mettre en place un environnement complet à savoir:

  • Un système de CMS nous permettant de créer des pages, modifier des blocks dans les pages sans avoir à éditer de code
  • Une gestion de membres, au moins pour protéger l’administration dans un premier temps
  • Une gestion des médias permettant l’insertion d’images, vidéos etc.
  • La possibilité d’utiliser de l’ »HTML Riche » pour les publications
  • Une administration permettant de gérer tout ce petit monde.

Installation de Symfony 2 via composer :

php composer.phar create-project symfony/framework-standard-edition sonata/ 2.2.1

Modifier le composer.json pour y inclure les bundles suivants :

"sonata-project/page-bundle": "2.2.*@dev",
"sonata-project/doctrine-orm-admin-bundle": "2.2.*@dev",
"sonata-project/admin-bundle": "2.2.*@dev",
"sonata-project/block-bundle": "2.2.*@dev",
"knplabs/knp-menu-bundle": "1.1.*@dev",
"sonata-project/seo-bundle": "1.1.1",
"sonata-project/easy-extends-bundle": "2.1.*@dev",
"sonata-project/notification-bundle": "2.2.*@dev",
"guzzle/guzzle": "3.3.*@dev",
"liip/monitor-bundle": "0.5.*@dev",
"liip/monitor": "0.5.*@dev",
"videlalvaro/php-amqplib": "v2.0.2",
"sonata-project/user-bundle": "2.2.*@dev",
"sonata-project/media-bundle": "2.2.*@dev",
"sonata-project/formatter-bundle": "2.2.*@dev"

puis lancer la commande

php composer.phar update

Pour télécharger les mises à jour.

Lire le reste de cet article »

Symfony2 : Unknown database type enum requested

3 octobre 2012

Avec Symfony2 et Doctrine2, il se peut que vous rencontriez ce message d’erreur:

[Doctrine\DBAL\DBALException]
 Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

C’est que vous utilisez le type ENUM dans vos tables MySQL qui n’est pas compris par PDO. Le plus simple pour le résoudre : éditer le fichier config.yml et rajouter

mapping_types:
    enum: string

A la fin de la rubrique doctrine:dbal:

doctrine:
    dbal:
        driver: %database_driver%
         host: %database_host%
         port: %database_port%
         dbname: %database_name%
         user: %database_user%
         password: %database_password%
         charset: UTF8
         mapping_types:
             enum: string

Il existe d’autres solutions proposées dans la documentation de Doctrine, mais plus complexes, tout dépendra de vos besoins.

Installation de Composer sous Linux et Windows

25 septembre 2012

Informations tirées des blogs :

Installation sous Linux

Utiliser la commande

> curl -s https://getcomposer.org/installer | php

Ou alors si curl n’est pas installé :

> php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"

Idéalement, on va déplacer ensuite le fichier composer.phar dans /user/local/bin pour pouvoir y accéder de façon globale sur le système:

> mv composer.phar /usr/local/bin/composer

Désormais si l’on fait un :

> composer --version

On doit avoir un résultat du type:

Composer version 6bd7ca0

Si on veut installer directement composer dans le répertoire /usr/local/bin :

> curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin

Installation sous Windows

Nous n’avons pas de commande curl, donc nous allons utiliser la deuxième méthode. Je pars du principe que nous utilisons WAMP sous Windows 7, que nous avons une installation avec les répertoires par défaut, que la version de PHP est la 5.3.13 et que vous savez utiliser la console de commandes Windows.

Tout d’abord, ouvre le fichier php.ini qui se trouve dans le répertoire c:\wamp\bin\php\php5.3.13 et assurez-vous que la ligne

extension=php_openssl.dll

est décommentée (supprimez le point virgule au début de la ligne). Assurez vous également d’ajouter le chemin c:\wamp\bin\php\php5.3.13 à la variable Path de votre système, cela permettra d’utiliser la commande php n’importe où.

Pour cela, Menu Démarrer / Panneau de configuration / Système et Sécurité / Système / Paramètres système avancés. Cliquez sur le bouton « Variables d’environnement », cherchez la variable Path dans la première fenêtre et double cliquez dessus. A la fin de la ligne rajoutez :

;c:\wamp\bin\php\php5.3.13

N’oubliez pas le point-virgule ! Validez et fermez tout.

Ouvrez maintenant une console et lancez la commande :

php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"

Un message devrait vous indiquer que l’installation s’est bien passée. La problématique sous Windows est que contrairement à Linux, on ne va pas pouvoir utiliser directement la commande composer et qu’il faudra installer une copie de composer.phar dans chaque répertoire de projet. Il est possible d’améliorer cela en bidouillant un peu :)

Commencez par déplacer composer.phar dans le répertoire c:\wamp\bin\php\php5.3.13

Toujours dans ce répertoire, créez le fichier composer.bat que vous allez ouvrir avec un éditeur de texte (le bloc notes fera l’affaire). Saisissez les commandes suivantes :

@echo off
php c:\wamp\bin\php\php5.3.13\composer.phar %*

Et sauvegardez (évidemment personnalisez si vos répertoires ne sont pas les mêmes).

Ouvrez à nouveau une console et tapez

composer --version

Normalement, tout devrait fonctionner. Désormais vous pouvez utiliser composer comme sous Linux ! Une simple mise à jour de composer.phar dans le répertoire /usr/local/bin ou c:\wamp\bin\php\php5.3.13\ vous permettra de profiter de cette nouvelle version partout

Utiliser SASS sous Windows

18 juillet 2012

Désireux de tester SASS, j’ai été un peu freiné par l’utilisation. En effet, si mes développements web se trouvent sur un machine sous Debian, ma machine de développement, elle, est sous Windows 7. SASS s’utilise en ligne de commande, et si ça ne me dérange pas d’en faire sous Linux, sous Windows ça me saoûle un peu et je trouve ça pas pratique. J’ai donc pris mon courage à deux mains pour mettre en place un système plus « User Friendly », c’est à dire soit déclencher la compilation d’un fichier .scss en double cliquant dessus, soit grâce au menu contextuel de Windows.

Lire le reste de cet article »

L’opérateur + sur les tableaux en PHP

25 mai 2012

Dans cet article nous allons nous pencher sur l’opérateur + et sur son action sur les tableaux en PHP.

Dans le cas des tableaux, le + représentera une union et non pas une addition aveugle de deux tableaux.

Prenons le cas le plus simple, l’union de tableaux associatifs:

1
2
3
4
5
6
7
8
9
10
11
<?php
$array1 = array(
    'cle1' => 'bleu',
    'cle2' => 'blanc',
);
 
$array2 = array(
    'cle3' => 'rouge',
);
 
print_r($array1 + $array2);

Le résultat de ce code :

Array
(
    [cle1] => bleu
    [cle2] => blanc
    [cle3] => rouge
)

Jusque là, aucun problème, les deux tableaux ont fusionné et le tableau $array2 a été ajouté à la suite de $array1. Prenons maintenant un premier cas particulier : les deux tableaux ont une clé en commun :

Lire le reste de cet article »

Installation de vlogger sur squeeze

13 février 2012

vlogger est un petit script qui va s’occuper de gérer l’écriture des logs à la place d’Apache. Pourquoi ? Car il est bien mieux optimisé qu’Apache pour faire cette tâche et que du coup nous allons soulager notre serveur et économiser des ressources qui seront plutôt utilisées ailleurs. De plus sa façon de créer les logs est plutôt sympathique: vlogger va créer dans le répertoire de logs d’Apache un répertoire pour chaque VirtualHost du serveur (ce nom sera basé sur le ServerName). A l’intérieur, vlogger va créer un fichier de log différent pour chaque jour, et va créer un lien symbolique access.log vers le fichier de log du jour.

Lire le reste de cet article »

Migration d’un serveur mysql 5.0 à 5.1 : ERROR 1577 (HY000)

13 février 2012

Lors de la migration d’un serveur mysql de la version 5.0 à la version 5.1 j’ai eu un message d’erreur lors du lancement du serveur :

ERROR 1577 (HY000) at line 1: Cannot proceed because system tables used by Event Scheduler were found damaged at server start

J’ai résolu le problème en lançant cette commande :

> mysql_upgrade -u root -p --force

Installer Eclipse et PDT séparément sur Windows

7 novembre 2010

Si vous ne voulez pas utiliser Eclipse uniquement pour faire du PHP, mieux vaut installer la version classique d’Eclipse, puis d’installer PDT (PHP Development Tool) séparément.

En ce qui me concerne j’ai commencé par télécharger la version « Classic » d’Eclipse que l’on peut trouver sur cette page. A l’heure où j’écris ces lignes il s’agit de Eclipse Classic 3.6.1. Téléchargez le zip en fonction de votre système (32 ou 64 bits). Dézippez ensuite votre fichier dans le répertoire Program Files. Vous obtenez un répertoire eclipse. Entre-y et faites un raccourcit de eclipse.exe vers le bureau par exemple.

Lire le reste de cet article »

Portée des fonctions

17 juin 2010

La dernière fois, je me posais la question de savoir comment Symfony faisait pour proposer dans ses vues des fonctions telles que __() (les helpers) puisque je pensais que la seule solution de rendre une fonction utilisateur locale à une méthode de classe était de la déclarer directement dans la méthode et que je n’ai trouvé aucun moyen de transmettre cette fonction à cette méthode (comme cela se passe pour les variables). Et pour cause, on n’en n’a pas besoin!

Lire le reste de cet article »

Les composants de Doctrine – Le composant Table

14 juin 2010

Maintenant que nous avons initialisé Doctrine (vois l’article sur l’introduction à Doctrine), nous allons pouvoir commencer à l’utiliser.

Comme nous l’avons dit, avec Doctrine tout est objet. Nous aurons donc accès à des classes qui vont nous permettre de travailler les données. On appelle ça des composants. Doctrine fournit plusieurs composants. En voici trois essentiels :

  • Le composant Record qui représente un enregistrement d’une table
  • Le composant Collection qui représente un ensemble de Record
  • Le composant Table qui représente notre table et nous permettra d’accéder aux composants Collection et Record

Dans cet article nous allons étudier le composant Table.  Il permet comme son nom l’indique d’accéder à une table de notre base de données et d’interagir avec elle. Pour cela il nous faut une instance de la classe représentant notre table :

1
2
3
<?php
require_once('bootstrap.php');
$table = Doctrine_Core::getTable('Produits');

Lire le reste de cet article »