Liste des articles pour le tag : Symfony2

postheadericon Symfony2 FOSUserBundle select locale on login and set it in session

As you may known since Symfony2.1 the locale is stored in the request.
Therfore in order to set/change the local, the most convenient way is to do it with the url.
See : Symfony documentation

I wanted somthing more hidden for the user.
I wanted the locale stored inside the user profile and set-up at the login time.
I am also using FOSUserBundle to handle the user management.

Here is how I did.

Lire la suite...

postheadericon CLI en Php avec Phar et Symfony2

La réalisation de script Shell peut rapidement venir un art. Surtout lorsque l'on veut aller plus loin que la simple manipulation de fichiers.

Il devient alors parfois plus simple d'utiliser des scripts avec un langage de programmation (Perl, Python, Php...)

Dans le cas présent, l'objectif est de réaliser une application :
- écrite en Php
- exécutable en ligne de commande (CLI)
- découplée en MVC
- et le tout pouvant être déployé dans un seul fichier

Le format Phar

Depuis la version 5.2, Php propose un moyen similaire aux archives JAR de java : les archives Phar.

Les archives Phar permettent de mettre dans un seul et même fichier toute une application php (aussi bien les fichiers php que les fichiers css, javascripts, images ...).

Les archives ainsi générées sont comme des fichiers php et restent donc exécutables sur un serveur web ou dans le cas présent par l'interpréteur cli de php.

Composants Symfony2

Nous essayerons tant que possible de nous appuyer sur des composants Symfony2 pour réaliser cette tâche.

Lire la suite...

postheadericon preExecute() dans les controller Symfony2

Contrairement à symfony1.x ou à Zend, Symfony2 ne propose pas par défaut un méthode, qui si elle est définie, permet d'exécuter un morceau de code avant toutes les actions d'un controller.

<?php
/** 
 * prototype d'une telle fonction dans symfony 1.x
 * dans un fichier controller, par exemple :
 * /app/frontend/modules/index/actions/actions.class.php
 * 
 */
class indexActions extends sfActions
    public function preExecute()
    {
        // Le code écrit ici sera executé avant chacune des actions de ce controlleur.
    }
}
?>
 
<?php
/** 
 * prototype d'une telle fonction dans Zend 1.x
 * dans un fichier controller, par exemple :
 * /application/controller/indexController.php
 */
class IndexController extends Zend_Controller_Action
{
    public function init()
    {
        // Le code écrit ici sera executé avant chacune des actions de ce controlleur.
    }
}
?>

Toutefois, Symfony2 propose un mécanisme d'event suffisamment avancé pour reproduire un tel comportement.

Lire la suite...