Author: Andreia.Bellini Date: 2010-02-21 19:22:56 +0100 (Sun, 21 Feb 2010) New Revision: 28168
Modified: doc/branches/1.4/more-with-symfony/pt/07-Extending-the-Web-Debug-Toolbar.markdown Log: Corrections in the Chapter 07 Modified: doc/branches/1.4/more-with-symfony/pt/07-Extending-the-Web-Debug-Toolbar.markdown =================================================================== --- doc/branches/1.4/more-with-symfony/pt/07-Extending-the-Web-Debug-Toolbar.markdown 2010-02-21 17:56:40 UTC (rev 28167) +++ doc/branches/1.4/more-with-symfony/pt/07-Extending-the-Web-Debug-Toolbar.markdown 2010-02-21 18:22:56 UTC (rev 28168) @@ -1,253 +1,253 @@ -Estendendo a Barra de Ferramenta para Debug Web -=============================================== +Estendendo a *Barra de Ferramenta para Debug Web* +================================================= * por Ryan Weaver* Por padrão, a barra de ferramentas para debug web do symfony contém uma variedade de ferramentas que auxiliam -com a depuração, melhoria de desempenho e muito mais. A ferramenta de depuração Web -consiste de várias ferramentas, chamada *painéis de debug web*, que se relacionam com a memória cache, +na depuração, melhoria de desempenho e muito mais. A *Barra de Ferramenta para Debug Web* +consiste de várias ferramentas, chamada *painéis de debug web*, que está relacionada com a memória cache, config, logs, uso de memória, versão do symfony e tempo de processamento. Além disso, o -symfony 1,3 introduz dois novos *painéis de debug web* para informações da `view` -e depuração da `mail`. +symfony 1.3 introduz dois novos *painéis de debug web* para exibir informações da `visão` (*view*) +e depuração de `e-mail` (*mail*). - + -A partir do symfony 1.2, os desenvolvedores podem criar facilmente seus próprios *painéis de depuração web* e -adicioná-los à barra de feramenta de depuração web. Neste capítulo, configuraremos um novo *painel de depuração web* -e depois o rodaremos com todas as diferentes ferramentas e personalizações disponíveis. +Desde a versão 1.2 do symfony, os desenvolvedores podem criar facilmente seus próprios *painéis de debug web* e +adicioná-los à *Barra de Ferramenta para Debug Web*. Neste capítulo, configuraremos um novo *painel de debug web* +e, depois, utilizaremos todas as diferentes ferramentas e personalizações disponíveis. Além disso, o [ac2009WebDebugPlugin](http://www.symfony-project.org/plugins/ac2009WebDebugPlugin) -contém vários painéis úteis e interessante que empregam algumas das +contém vários painéis úteis e interessantes que empregam algumas das técnicas utilizadas neste capítulo. -Criando um novo Painel de Depuração Web ---------------------------------------- +Criando um novo *Painel de Debug Web* +------------------------------------- -Os componentes individuais da ferramenta de depuração web são conhecidos como os *painéis de depuração web* -e são classes especiais que estendem a classe `~sfWebDebugPanel~`. Criar um novo +Os componentes individuais da *Barra de Ferramentas para Debug Web* são conhecidos como *painéis de debug web* +e são classes especiais que estendem a classe ~`sfWebDebugPanel`~. Criar um novo painel é realmente muito fácil. Crie um arquivo chamado `sfWebDebugPanelDocumentation.class.php` em seu diretorio `lib/debug/` (você precisa criar este diretório): [php] - //lib/debug/ sfWebDebugPanelDocumentation.class.php + // lib/debug/sfWebDebugPanelDocumentation.class.php class acWebDebugPanelDocumentation extends sfWebDebugPanel - ( - function getTitle() - ( + { + 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 Painel de Conteúdo'; + { + $content = 'Placeholder Panel Content'; return $content; - ) - ) + } + } -No mínimo, todos os painéis de depuração devem implementar os métodos `getTitle()`, `getPanelTitle()` +No mínimo, todos os painéis de debug devem implementar os métodos `getTitle()`, `getPanelTitle()` e `getPanelContent()`. * ~`SfWebDebugPanel::getTitle()`~: Determina como o painel irá aparecer na - barra de ferramentas. Como a maioria dos painéis, o nosso painel personalizado inclui um pequeno ícone - e um nome curto para o painel. + barra de ferramenta. Como a maioria dos painéis, o nosso painel personalizado inclui um pequeno ícone + e um nome curto no painel. -* ~`SfWebDebugPanel::getPanelTitle()`~: Usado como o texto para a tag `h1` - aparecerá no topo do conteúdo do painel. Este também é usado como atributo `title` - da tag link que envolve o ícone na barra de ferramentas e, como tal, +* ~`SfWebDebugPanel::getPanelTitle()`~: Usado como o texto para a *tag* `h1` + que aparecerá no topo do conteúdo do painel. Também é usado como atributo `title` + da *tag link* que envolve o ícone na barra de ferramentas e, como tal, *não* deve incluir qualquer código HTML. * ~`SfWebDebugPanel::getPanelContent()`~: gera o conteúdo HTML que será exibido quando você clicar no ícone do painel. -A única etapa restante é para notificar o aplicativo que você deseja incluir -o novo painel na sua barra de ferramentas. Para fazer isso, adicione um ouvinte ao -evento `debug.web.load_panels`, que é notificado quando a ferramenta de depuração web -está recolhendo os painéis potencial. Primeiramente, modificar o arquivvo -`config/ProjectConfiguration.class.php` para ouvir o evento: +A única etapa restante é para notificar a aplicação que você deseja incluir +o novo painel na sua barra de ferramentas. Para fazer isso, adicione um *listener* ao +evento `debug.web.load_panels`, que é notificado quando a *Barra de Ferramenta para Debug Web* +está coletando os potenciais painéis. Primeiramente, modificar o arquivvo +`config/ProjectConfiguration.class.php` para ouvir (*listen*) o evento: [php] - //Config/ProjectConfiguration.class.php - function setup() - ( - //... + // config/ProjectConfiguration.class.php + public function initialize() + { + // ... $this->dispatcher->connect('debug.web.load_panels', array( 'acWebDebugPanelDocumentation', 'listenToLoadDebugWebPanelEvent' )); - ) + } -Agora, vamos adicionar a funçao ouvinte `listenToLoadDebugWebPanelEvent()` ao -`acWebDebugPanelDocumentation.class.php` para adicionar o painel para a barra de ferramentas: +Agora, vamos adicionar a função *listener* `listenToLoadDebugWebPanelEvent()` ao +`acWebDebugPanelDocumentation.class.php` para adicionar o painel na barra de ferramentas: [php] - //Lib/debug/sfWebDebugPanelDocumentation.class.php + // lib/debug/sfWebDebugPanelDocumentation.class.php public static function listenToLoadDebugWebPanelEvent(sfEvent $event) - ( + { $event->getSubject()->setPanel( 'documentation', new self($event->getSubject()) ); - ) + } É isto! Atualize seu navegador e verá imediatamente o resultado. - + >**TIP** -> A partir do symfony 1.3, um url parâmetro para o `sfWebDebugPanel pode ser usado para automaticamente -> abrir um determinado painel de depuração web no carregamento da página. Por exemplo, adicionando -> `?sfWebDebugPanel=documentation` ao final da URL seria automaticamente -> aberto o painel de documentação que acabou de ser adicionado. sto pode ser bastante útil -> ao construir de painéis personalizados. +>A partir do symfony 1.3, um parâmetro url `sfWebDebugPanel pode ser usado para automaticamente +>abrir um determinado painel de debug web no carregamento da página. Por exemplo, adicionando +>`?sfWebDebugPanel=documentation` ao final da URL será automaticamente +>aberto o painel de documentação que acabamos de adicionar. Isto pode ser muito útil +>ao construir painéis personalizados. -Os Três Tipos de painéis depuração Web ------------------------------------ +Os Três Tipos de *Painéis de Debug Web* +--------------------------------------- -Nos bastidores, existem apenas três tipos diferentes de painéis de depuração web. +Nos bastidores, existem apenas três tipos diferentes de *Painéis de Debug Web*. ### O painel do tipo *Icon-Only* -O tipo mais básico de painel é um que mostra um ícone e texto na barra de ferramentas +O tipo mais básico de painel é o que mostra um ícone e texto na barra de ferramentas e nada mais. O exemplo clássico é o painel `memory`, que exibe o uso de memória, mas não faz nada quando clicado. Para criar um painel *icon-only*, -basta definir o `getPanelContent()` para retornar uma seqüência vazia. A única saída +basta definir o `getPanelContent()` para retornar uma string vazia. A única saída do painel vem do método `getTitle()`: [php] public function getTitle() - ( - $totalMemory = sprintf('% .1f',(memory_get_peak_usage(true)/ 1024)); + { + $totalMemory = sprintf('%.1f', (memory_get_peak_usage(true) / 1024)); return '<img src="'.$this->webDebug->getOption('image_root_path').'/memory.png" alt="Memory" /> '.$totalMemory.' KB'; - ) + } public function getPanelContent() - ( + { return; - ) + } ### O painel do tipo *Link* -Como o painel *icon-only*, um painel *link* constituí de um painel sem conteúdo. Ao contrário do -painel *only-icon*, no entanto, ao clicar em um painel *link* sobre a barra de ferramentas -levá-lo-a para um URL especificado através do método `getTitleUrl()` painel. Para criar +Como o painel *icon-only*, um painel *link* consiste de um painel sem conteúdo. No entanto, +ao contrário do painel *only-icon*, ao clicar em um painel *link* na barra de ferramentas +você será direcionado à URL especificada através do método `getTitleUrl()` do painel. Para criar um painel *link*, configure o `getPanelContent()` para retornar uma seqüência vazia e adicione -um método `getTitleUrl()` método para a classe. +um método `getTitleUrl()` na classe. [php] public function getTitleUrl() - ( - //Ligação para um uri externo + { + // link to an external uri return 'http://www.symfony-project.org/api/1_3/'; - // Ou link para uma rota em seu aplicativo - rerurn url_for( 'homepage'); - ) + // or link to a route in your application + return url_for('homepage'); + } public function getPanelContent() - ( + { return; - ) + } ### O painel do tipo *Content* -De longe, o tipo mais comum de painel é um painel de *content*. Estes painéis têm -um corpo cheio de conteúdo HTML que é exibida quando você clica no painel -na barra de ferramentas de depuração. Para criar esse tipo de painel, simplesmente certifique-se que -o `getPanelContent()` retorna mais de uma seqüência vazia. +De longe, o tipo mais comum de painel é um painel *content*. Estes painéis têm +um corpo cheio de conteúdo HTML que é exibido quando você clica no painel +na *Barra de Ferramentas para Debug Web*. Para criar esse tipo de painel, simplesmente +certifique-se que o `getPanelContent()` retorna mais do que uma string vazia. -Personalizando o Painel Content +Personalizando o Painel *Content* ------------------------- -Agora que você criou e adicionou seu painel personalizado de depuração à barra de ferramentas, -adicionar conteúdo pode ser feito facilmente através do método `getPanelContent()`. -Symfony fornece vários métodos para ajudá-lo a tornar este conteúdo rico +Agora que você criou e adicionou seu painel personalizado de debug à barra de ferramentas, +a adição de conteúdo poderá ser realizada facilmente através do método `getPanelContent()`. +O symfony fornece vários métodos para ajudá-lo a tornar este conteúdo rico e utilizável. ### ~`SfWebDebugPanel::setStatus ()`~ -Por padrão, cada painel é exibido na barra de ferramenta de depuração web usando o fundo padrão cinza. -Isso pode ser alterado, porém, um fundo laranja ou vermelho quando se +Por padrão, cada painel é exibido na *Barra de Ferramentas para Debug Web* usando um +fundo padrão cinza. Mas você pode alterar para um fundo laranja ou vermelho quando se requer atenção especial algum conteúdo dentro do painel. - + -Para alterar a cor de fundo do painel, basta empregar o método `setStatus()`. -Este método aceita qualquer `prioridade` constante da -da classe [sfLogger](http://www.symfony-project.org/api/1_3/sfLogger). +Para alterar a cor de fundo do painel, basta utilizar o método `setStatus()`. +Este método aceita qualquer constante `priority` da classe +[sfLogger](http://www.symfony-project.org/api/1_3/sfLogger). Em particular, há três níveis de status diferentes, que correspondem -para as três diferentes cores de fundo de um painel (cinza, laranja e vermelho). +as três diferentes cores de fundo de um painel (cinza, laranja e vermelho). Mais comumente, o método `setStatus()` será chamado de dentro do -método `getPanelContent()`, quando tenha ocorrido alguma condição que precisa -atenção especial. +método `getPanelContent()`, quando ocorreu alguma condição que precisa +de atenção especial. [php] public function getPanelContent() - ( + { // ... - // Definir o fundo para cinza (padrão) - $this->setStatus(sfLogger:: INFO); + // set the background to gray (the default) + $this->setStatus(sfLogger::INFO); - // Definir o fundo de laranja - $this->setStatus(sfLogger:: WARNING); + // set the background to orange + $this->setStatus(sfLogger::WARNING); - // Definir o fundo para vermelho - $this->setStatus(sfLogger:: ERR); - ) + // set the background to red + $this->setStatus(sfLogger::ERR); + } ### ~`SfWebDebugPanel::getToggler()`~ -Uma das características mais comum em todas as ferramentas de depuração web existentes é o toggler: -um elemento visual que esconde/mostra um recipiente de conteúdo quando clicado. +Uma das características mais comuns em todas as *Barra de Ferramentas para Debug Web* existentes é o *toggler*: +um elemento visual em forma de uma seta que esconde/exibe conteúdo quando clicado. - + -Esta funçao pode ser facilmente usada no painel personalizado de depuração com a função +Esta função pode ser facilmente usada no painel personalizado de debug com a função `getToggler()`. Por exemplo, suponha que queremos mudar uma lista de conteúdo em um painel: [php] public function getPanelContent() - ( + { $listContent = '<ul id="debug_documentation_list" style="display: none;"> - <li> List Item 1 </ li> - <li> List Item 2 </ li> - </ ul> '; + <li>List Item 1</li> + <li>List Item 2</li> + </ul>'; $toggler = $this->getToggler('debug_documentation_list', 'Toggle list'); - return sprintf('<h3>List Items %s</h3>%s', $toggler, $listContent); - ) + return sprintf('<h3>List Items %s</h3>%s', $toggler, $listContent); + } -O `getToggler` leva dois argumentos: o DOM `id` do elemento para mudar e -um `título` para definir como o atributo `título` do link toggler. A escolha é sua. -para criar o elemento DOM com o dado `id` atributo, bem como qualquer etiqueta descritiva -(por exemplo "Os itens da lista ") para o toggler. +O `getToggler` possui dois argumentos: o `id` do elemento e +um `título` para definir como o atributo `title` do link *toggler*. Você é que deverá +criar o elemento DOM com o atributo `id`, bem como qualquer *label* descritiva +(por exemplo "Os itens da lista") para o *toggler*. ### ~`SfWebDebugPanel::getToggleableDebugStack()`~ -Similar ao `getToggler()`, `getToggleableDebugStack ()` processa uma seta clicável +Similar ao `getToggler()`, o `getToggleableDebugStack()` processa uma seta clicável que alterna a exibição de um conjunto de conteúdos. Neste caso, o conjunto de conteúdo é -uma depuração stack trace. Esta função é útil se você precisar exibir resultados de log +um *debug stack trace*. Esta função é útil se você precisar exibir resultados de log para uma classe personalizada. Por exemplo, suponha que realizamos alguns logs personalizado em uma classe chamada `myCustomClass`: [php] - MyCustomClass classe + class myCustomClass { public function doSomething() { $dispatcher = sfApplicationConfiguration::getActive() ->getEventDispatcher(); - $ dispatcher-> notify (sfEvent novo ($ this, 'application.log', array ( + $dispatcher->notify(new sfEvent($this, 'application.log', array( 'priority' => sfLogger::INFO, 'Beginning execution of myCustomClass::doSomething()', ))); @@ -255,15 +255,15 @@ } Como exemplo, vamos exibir uma lista das mensagens de log relacionados à -`MyCustomClass` completo com depuração stack trace para cada um. +`MyCustomClass` completo com *debug stack trace* para cada um. [php] public function getPanelContent() { - // Recupera todas as mensagens de log para a solicitação atual + // retrieves all of the log messages for the current request $logs = $this->webDebug->getLogger()->getLogs(); - $logList =''; + $logList = ''; foreach ($logs as $log) { if ($log['type'] == 'myCustomClass') @@ -271,30 +271,30 @@ $logList .= sprintf('<li>%s %s</li>', $log['message'], $this->getToggleableDebugStack($log['debug_backtrace']) - }; + ); } } return sprintf('<ul>%s</ul>', $logList); } - + >**NOTE** >Mesmo sem a criação de um painel personalizado, as mensagens de log para >`myCustomClass` ->seria exibida no painel de registros. A vantagem aqui é simplesmente ->recolher este subconjunto de mensagens de log em um local e controle de sua saída. +>seriam exibidas no painel de logs. A vantagem aqui é simplesmente +>reunir este subconjunto de mensagens de log em um local e controlar a sua saída. ### ~`SfWebDebugPanel::formatFileLink()`~ -Novo no symfony 1,3 é a possibilidade de clicar em arquivos na barra de ferramentas de depuração web e -mandar abrir no seu editor de texto preferido. Para obter mais informações, consulte o +A possibilidade de clicar em arquivos na *Barra de Ferramentas para Debug Web* e +abrir no seu editor de texto preferido é outra novidade no symfony 1.3. Para obter mais informações, consulte o artigo ["What's new"]http://www.symfony-project.org/tutorial/1_3/en/whats-new) para o symfony 1.3. -Para ativar esse recurso para qualquer caminho de arquivo particular, o `formatFileLink()` deve -ser utilizado. Para além do arquivo em si, uma linha exata opcionalmente pode ser alvejado. -Por exemplo, o código seguinte link para a linha 15 do `config/ProjectConfiguration.class.php`: +Para ativar esse recurso para qualquer caminho de arquivo em particular, o `formatFileLink()` deve +ser utilizado. Além do arquivo em si, poderá ser, opcionalmente, direcionado para uma linha exata. +Por exemplo, o seguinte código deverá linkar para a linha 15 do `config/ProjectConfiguration.class.php`: [php] public function getPanelContent() @@ -310,30 +310,30 @@ } Tanto o segundo argumento (número da linha) quanto o terceiro argumento (o link de texto) são -opcionais. Se nenhum argumento "texto link" é especificado, o caminho do arquivo será mostrado +opcionais. Se nenhum argumento de "texto do link" for especificado, o caminho do arquivo será mostrado como o texto do link. >**NOTE** ->Antes de testar, verifique se você configurou o arquivo de novo recurso. Este -> recurso pode ser configurado através da chave `sf_file_link_format em settings.yml ou -> através da configuração `file_link_format` em +>Antes de testar, verifique se você configurou o novo recurso de link de arquivo. Este +>recurso pode ser configurado através da chave `sf_file_link_format` no settings.yml ou +>através da configuração `file_link_format` no >[xdebug](http://xdebug.org/docs/stack_trace#file_link_format). O último ->método garante que o projeto não está vinculado a uma IDE específica. +>método garante que o projeto não está vinculado à uma IDE específica. -Outros truques com a barra de depuração da Web +Outros truques com a *Barra de Ferramentas para Debug Web* --------------------------------------- -Em grande parte, a magia de seu painel de depuração web personalizado será formada pelo -conteúdo e informações que você escolher para mostrar. Há, no entanto, +Em grande parte, a magia de seu painel de debug web personalizado será formada pelo +conteúdo e informações que você decidir mostrar. Há, no entanto, alguns truques mais a explorar. -### Removendo Default Painéis +### Removendo os Painéis Padrão -Por padrão, o symfony automaticamente carrega vários painéis de depuração web em sua -Barra de ferramentas de web. Ao utilizar o evento `debug.web.load_panels` , estes painéis padrões -também podem ser facilmente removidos. Use a função de ouvinte declarada +Por padrão, o symfony automaticamente carrega vários painéis de debug web em sua +*Barra de ferramentas para Debug Web*. Ao utilizar o evento `debug.web.load_panels`, estes painéis padrões +também podem ser facilmente removidos. Use a mesma função *listener* declarada anteriormente, mas substitua o corpo com a função `removePanel()`. O seguinte -código irá remover o painel `memória` da barra de ferramentas: +código irá remover o painel `memory` da barra de ferramentas: [php] public static function listenToLoadDebugWebPanelEvent(sfEvent $event) @@ -341,27 +341,27 @@ $event->getSubject()->removePanel('memory'); } -###Acessando os parâmetros de solicitação de um Painel +### Acessando os Parâmetros do Pedido (*Request*) a partir de um Painel -Uma das coisas mais comum necessária dentro de um painel de debug é o pedido de -parâmetros. Digamos, por exemplo, que você deseja exibir informações de -um banco de dados sobre um objeto `evento` no banco de dados baseado fora de um `event_id` -parâmetro de solicitação: +Uma das coisas mais comumente necessárias dentro de um painel de debug são os parâmetros +do pedido. Digamos, por exemplo, que você deseja exibir informações de +um banco de dados sobre um objeto `Event` no banco de dados com base no parâmetro +do pedido `event_id`: [php] $parameters = $this->webDebug->getOption('request_parameters'); - if (isset($parameters['event_id'])) + if(isset($parameters['event_id'])) { $event = Doctrine::getTable('Event')->find($parameters['event_id']); } -###Ocultar um Painel Condicionalmente +### Ocultar um Painel Condicionalmente -Às vezes, o painel pode não ter qualquer informação útil para mostrar para a +Às vezes, o painel pode não possuir informação útil para mostrar para a solicitação atual. Nessas situações, você pode optar por esconder o seu painel completamente. Vamos supor que, no exemplo anterior, que o painel personalizado não apresente nenhuma informação a não ser o parâmetro `event_id` do pedito. -Para ocultar o painel, basta não retornar conteúdo para o método `getTitle()`: +Para ocultar o painel, basta não retornar conteúdo no método `getTitle()`: [php] public function getTitle() @@ -378,9 +378,9 @@ Reflexões finais -------------- -A ferramenta de depuração web existe para tornar a vida do desenvolvedor mais simples, mas é mais -do que uma exposição passiva da informação. Ao adicionar painéis personalizado de depuração, o -potencial da web ferramentas de depuração é limitado apenas pela imaginação do +A *Barra de ferramentas para Debug Web* existe para tornar a vida do desenvolvedor mais simples, porém é mais +do que uma exposição passiva da informação. Ao adicionar painéis personalizados de debug, o +potencial da *Barra de ferramentas para Debug Web* é limitado apenas pela imaginação do desenvolvedor. O [ac2009WebDebugPlugin](http://www.symfony-project.org/plugins/ac2009WebDebugPlugin) inclui apenas alguns dos painéis que poderiam ser criados. Sinta-se livre para criar -o seu próprio. \ No newline at end of file +os seus próprios. \ No newline at end of file -- You received this message because you are subscribed to the Google Groups "symfony SVN" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/symfony-svn?hl=en.
