Inicio » Más con Symfony » Mejorando la barra de depuración web » Creando un nuevo panel de depuración web
Creando un nuevo panel de depuración web
Los elementos que forman la barra de depuración web se denominan paneles de
depuración web y son unas clases especiales que heredan de la clase
sfWebDebugPanel class. En realidad, crear un nuevo panel es muy sencillo.
Crea un nuevo archivo llamado sfWebDebugPanelDocumentation.class.php en el
directorio lib/debug/ de tu proyecto (el directorio no existe y por tanto
tienes que crearlo):
// lib/debug/sfWebDebugPanelDocumentation.class.php
class acWebDebugPanelDocumentation extends sfWebDebugPanel
{
public function getTitle()
{
return '<img src="/images/documentation.png" alt="Documentation Shortcuts" height="16" width="16" /> docs';
}
public function getPanelTitle()
{
return 'Documentation';
}
public function getPanelContent()
{
$content = 'Placeholder Panel Content';
return $content;
}
}
Como mínimo todos los paneles deben implementar los métodos getTitle(),
getPanelTitle() y getPanelContent().
sfWebDebugPanel::getTitle(): determina cómo se muestra inicialmente el
panel en la barra de depuración web. Al igual que la mayoría de paneles,
el panel que estamos creando se va a mostrar mediante un pequeño icono y
un nombre corto.
sfWebDebugPanel::getPanelTitle(): su valor se muestra en la parte
superior del contenido del panel mediante una etiqueta <h1>. También se
utiliza como valor del atributo title del enlace que encierra el icono
de la barra, por lo que no puede incluir ningún tipo de código HTML.
sfWebDebugPanel::getPanelContent(): genera el contenido HTML que se
muestra al pulsar sobre el icono del panel.
El último paso que falta consiste en notificar a la aplicación que se quiere
incluir un nuevo panel en la barra. Para ello, añade un nuevo listener para
el evento debug.web.load_panels, que se notifica cuando la barra de depuración
obtiene los paneles que se van a mostrar. En primer lugar, modificar el archivo
config/ProjectConfiguration.class.php para escuchar ese evento:
// config/ProjectConfiguration.class.php
public function initialize()
{
// ...
$this->dispatcher->connect('debug.web.load_panels', array(
'acWebDebugPanelDocumentation',
'listenToLoadDebugWebPanelEvent'
));
}
A continuación, añade la función listenToLoadDebugWebPanelEvent() del
listener a la clase acWebDebugPanelDocumentation.class.php para incluir el
panel en la barra:
// lib/debug/sfWebDebugPanelDocumentation.class.php
public static function listenToLoadDebugWebPanelEvent(sfEvent $event)
{
$event->getSubject()->setPanel(
'documentation',
new self($event->getSubject())
);
}
¡Y eso es todo! Refresca la página para ver el resultado de forma inmediata.

Sugerencia
Desde Symfony 1.3, es posible utilizar en la URL un parámetro llamado
sfWebDebugPanel para mostrar desplegado un determinado panel web al
cargar la página. Si por ejemplo se añade ?sfWebDebugPanel=documentation
al final de la URL, se abrirá automáticamente el panel que se acaba de crear.
Esta característica puede ser muy útil cuando se crean paneles propios.
Puedes sugerir, comentar, criticar e informar de errores en contacto (arroba) librosweb.es