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 atributotitle
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 setup()
{
// ...
$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.
Nota 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.