Maxy.fr

Symfony2 : Exécuter un script php au chargement des pages

Il est souvent utile suivant les besoins d'executer un script PHP lors du chargement de n'importe quelle page d'un site. Par exemple pour l'enregistrement de statistiques.

Il s'avère que ceci est plutôt simple à réaliser en créant et en configurant un service comme il le faut.

Créez donc dans le bundle de votre choix un service avec une méthode contenant le script à éxecuter.

Il vous faut maintenant configurer votre service en y ajoutant les tags qui permettront l'execution automatique de votre code.

Exemple de configuration : Test/StatistiquesBundle/Ressources/Config/services.yml

parameters:
    Statistiques.class: Test\StatistiquesBundle\Statistiques

services:
    Statistiques.example:
        class: %Statistiques.class%
        arguments: [@request, @doctrine.orm.entity_manager]
        scope: request
        tags:
          - { name: kernel.event_listener, event: kernel.controller, method: onLoad }

L'important ici est la déclaration des tags. Comme défini ci-dessus cela permettra l'execution de la fonction onLoad (peut importe le nom) lors du déclenchement de l'évenement "kernel.controller". Votre script se lancera donc juste avant que le controlleur ne s'exécute.

Exemple de code pour votre class Statistiques : Test/StatistiquesBundle/Statistiques.php

<?php

namespace Test\StatistiquesBundle;

class Statistiques
{
	protected $request;
	protected $em;

	public function __construct($request, $em)
	{
		$this->request = $request;
		$this->em = $em;
	}

	public function onLoad()
	{
		/* Votre code ici */
	}
}

 

Categories : PHP, Symfony2

By Guillaume - 02/02/2014 at 02:43 am

Shar this article :

Similar articles