Archive pour la catégorie ‘Symfony’

Sonata : Améliorer le CKEditor de FormatterBundle

jeudi 20 juin 2013

Nous allons insérer ici deux choses :

  • Un plugin permettant d’ajouter des vidéos Youtube dans CKEditor
  • Utiliser un « File Browser » pour gérer les différents médias : KCFinder

On va commencer par étendre le FormatterBundle :

php app/console sonata:easy-extends:generate --dest=src SonataPageBundle

que l’on va ensuite activer dans AppKernel.php

1
2
3
4
5
6
7
8
9
10
11
public function registerBundles()
{
    // ...
 
    $bundles = array(
        // ...
        new Application\Sonata\FormatterBundle\ApplicationSonataFormatterBundle(),
    );
 
    // ...
}

Lire le reste de cet article »

Sonata : Créer un MediaBlock personnalisé

vendredi 14 juin 2013

Ce document se base sur la documentation de Sonata décrivant la procédure pour créer un block personnalisé.

Exposition du cas: On désire créer un slide show ou un carrousel quelconque on veut pouvoir le gérer via SonataPage, c’est à dire pouvoir gérer les images qui défilent via le CMS. L’idée est de créer un block container content_slide par exemple et pouvoir gérer les images du carrousel via des blocks media.

Nous aurons besoin des éléments suivants:

  • Créer un block media personnalisé qui contiendra une image, un titre et un lien
  • Créer un contexte personnalisé slide pour lequel on définira une taille de miniature spécifique

Pour réaliser cela, nous nous baserons la documentation de Sonata indiquée en début d’article. Le principe reste le même pour un MediaBlock avec quelques ajustements. Tout d’abord, voici la structure de notre Bundle :

/src
    /Coolcoyote
        /BlocksBundle
            /Block
                /SlideMediaBlockService.php
            /DependencyInjection
                /Configuration.php
                /CoolcoyoteBlocksExtension.php
            /Resources
                /config
                    /services.xml
                /views
                    /Block
                        block_slide_media.twig.html
            /CoolcoyoteBlocksBundle.php

Lire le reste de cet article »

Installation du CMS Sonata Page

lundi 13 mai 2013

Voici comment installer le CMS Sonata Page à partir d’une installation neuve de Symfony. Cet article 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.3.*@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": "1.0.*@dev",
"liip/monitor": "1.0.*@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

mercredi 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.