Skip to content

Commit

Permalink
Split Debug/Dump extensions
Browse files Browse the repository at this point in the history
So other dump functions could be used, and a difference between dumping
and passing to the debugbar can be made.
  • Loading branch information
barryvdh committed Nov 14, 2014
1 parent a8607cf commit a3b1f74
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 8 deletions.
7 changes: 4 additions & 3 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,13 +128,14 @@ Laravel Debugbar comes with two Twig Extensions. These are tested with [rcrowe/T
Add the following extensions to your TwigBridge config/extensions.php (or register the extensions manually)

'Barryvdh\Debugbar\Twig\Extension\Debug',
'Barryvdh\Debugbar\Twig\Extension\Dump',
'Barryvdh\Debugbar\Twig\Extension\Stopwatch',

The Debug extension will replace the [dump function](http://twig.sensiolabs.org/doc/functions/dump.html) to output variables to the Messages,
The Dump extension will replace the [dump function](http://twig.sensiolabs.org/doc/functions/dump.html) to output variables using the DataFormatter. The Debug extension adds a `debug()` function which passes variables to the Message Collector,
instead of showing it directly in the template. It dumps the arguments, or when empty; all context variables.

{{ dump() }}
{{ dump(user, categories) }}
{{ debug() }}
{{ debug(user, categories) }}

The Stopwatch extension adds a [stopwatch tag](http://symfony.com/blog/new-in-symfony-2-4-a-stopwatch-tag-for-twig) similar to the one in Symfony/Silex Twigbridge.

Expand Down
7 changes: 2 additions & 5 deletions src/Twig/Extension/Debug.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,7 @@ public function getFunctions()
{
return array(
new Twig_SimpleFunction(
'dump', [$this, 'dump'], array('needs_context' => true, 'needs_environment' => true)
),
new Twig_SimpleFunction(
'debug', [$this, 'dump'], array('needs_context' => true, 'needs_environment' => true)
'debug', [$this, 'debug'], array('needs_context' => true, 'needs_environment' => true)
),
);
}
Expand All @@ -59,7 +56,7 @@ public function getFunctions()
* @param Twig_Environment $env
* @param $context
*/
public function dump(Twig_Environment $env, $context)
public function debug(Twig_Environment $env, $context)
{
if (!$env->isDebug() || !$this->debugbar) {
return;
Expand Down
84 changes: 84 additions & 0 deletions src/Twig/Extension/Dump.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php namespace Barryvdh\Debugbar\Twig\Extension;

use DebugBar\DataFormatter\DataFormatterInterface;
use Twig_Environment;
use Twig_Extension;
use Twig_SimpleFunction;

/**
* Dump variables using the DataFormatter
*/
class Dump extends Twig_Extension
{
/**
* @var \DebugBar\DataFormatter\DataFormatter
*/
protected $formatter;

/**
* Create a new auth extension.
*
* @param \DebugBar\DataFormatter\DataFormatterInterface $formatter
*/
public function __construct(DataFormatterInterface $formatter)
{
$this->formatter = $formatter;
}

/**
* {@inheritDoc}
*/
public function getName()
{
return 'Laravel_Debugbar_Dump';
}

/**
* {@inheritDoc}
*/
public function getFunctions()
{
return array(
new Twig_SimpleFunction(
'dump', [$this, 'dump'], array('is_safe' => ['html'], 'needs_context' => true, 'needs_environment' => true)
),
);
}

/**
* Based on Twig_Extension_Debug / twig_var_dump
* (c) 2011 Fabien Potencier
*
* @param Twig_Environment $env
* @param $context
*
* @return string
*/
public function dump(Twig_Environment $env, $context)
{
$output = '';

$count = func_num_args();
if (2 === $count) {
$data = array();
foreach ($context as $key => $value) {
if (is_object($value)) {
if (method_exists($value, 'toArray')) {
$data[$key] = $value->toArray();
} else {
$data[$key] = "Object (" . get_class($value) . ")";
}
} else {
$data[$key] = $value;
}
}
$output .= $this->formatter->formatVar($data);
} else {
for ($i = 2; $i < $count; $i++) {
$output .= $this->formatter->formatVar(func_get_arg($i));
}
}

return '<pre>'.$output.'</pre>';
}
}

0 comments on commit a3b1f74

Please sign in to comment.