diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml b/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml index 874ba8b216244..ed7e923f0d05d 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml @@ -8,6 +8,7 @@ Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController Symfony\Bundle\WebProfilerBundle\Controller\RouterController Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController + Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension @@ -30,5 +31,9 @@ %kernel.debug% + + + + diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/bag.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/bag.html.twig index 8947c9a6cb174..b7a774db532da 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/bag.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/bag.html.twig @@ -1,16 +1,15 @@ - - + + {% for key in bag.keys|sort %} - {# JSON_UNESCAPED_SLASHES = 64, JSON_UNESCAPED_UNICODE = 256 #} - + {% endfor %} diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig index 3b45ca11163ec..5cc3ae149fa98 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig @@ -170,6 +170,10 @@ pre, code { margin-left: 250px; padding: 30px 40px 40px; } +#collector-content pre { + white-space: pre-wrap; + word-break: break-all; +} #navigation { float: left; width: 250px; diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/table.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/table.html.twig index 1c5130dfba761..a5b6078eb6ad7 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/table.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/table.html.twig @@ -1,16 +1,15 @@
KeyValueKeyValue
{{ key }}{{ bag.get(key)|json_encode(64 b-or 256) }}
{{ profiler_dump(bag.get(key)) }}
- - + + {% for key in data|keys|sort %} - {# JSON_UNESCAPED_SLASHES = 64, JSON_UNESCAPED_UNICODE = 256 #} - + {% endfor %} diff --git a/src/Symfony/Bundle/WebProfilerBundle/Twig/WebProfilerExtension.php b/src/Symfony/Bundle/WebProfilerBundle/Twig/WebProfilerExtension.php new file mode 100644 index 0000000000000..a6cb0bb6a3276 --- /dev/null +++ b/src/Symfony/Bundle/WebProfilerBundle/Twig/WebProfilerExtension.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\WebProfilerBundle\Twig; + +use Symfony\Component\HttpKernel\DataCollector\Util\ValueExporter; + +/** + * Twig extension for the profiler + * + * @author Fabien Potencier + */ +class WebProfilerExtension extends \Twig_Extension +{ + /** + * @var ValueExporter + */ + private $valueExporter; + + /** + * {@inheritdoc} + */ + public function getFunctions() + { + return array( + new \Twig_SimpleFunction('profiler_dump', array($this, 'dumpValue')), + ); + } + + public function dumpValue($value) + { + if (null === $this->valueExporter) { + $this->valueExporter = new ValueExporter(); + } + + return $this->valueExporter->exportValue($value); + } + + /** + * {@inheritdoc} + */ + public function getName() + { + return 'profiler'; + } +} diff --git a/src/Symfony/Bundle/WebProfilerBundle/composer.json b/src/Symfony/Bundle/WebProfilerBundle/composer.json index 2911bd7f7fb07..c6e5ee51248a9 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/composer.json +++ b/src/Symfony/Bundle/WebProfilerBundle/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=5.3.3", - "symfony/http-kernel": "~2.2", + "symfony/http-kernel": "~2.3", "symfony/routing": "~2.2", "symfony/twig-bridge": "~2.2" }, diff --git a/src/Symfony/Component/Form/Tests/Extension/DataCollector/FormDataExtractorTest.php b/src/Symfony/Component/Form/Tests/Extension/DataCollector/FormDataExtractorTest.php index 37b5b7d86cfbb..06f7f8866d807 100644 --- a/src/Symfony/Component/Form/Tests/Extension/DataCollector/FormDataExtractorTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/DataCollector/FormDataExtractorTest.php @@ -25,7 +25,7 @@ class FormDataExtractorTest_SimpleValueExporter extends ValueExporter /** * {@inheritdoc} */ - public function exportValue($value) + public function exportValue($value, $depth = 1, $deep = false) { return is_object($value) ? sprintf('object(%s)', get_class($value)) : var_export($value, true); } diff --git a/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php index 4473605e843fc..cc366186fc0f8 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php @@ -51,14 +51,10 @@ public function collect(Request $request, Response $response, \Exception $except $attributes = array(); foreach ($request->attributes->all() as $key => $value) { if ('_route' === $key && is_object($value)) { - $attributes['_route'] = $this->varToString($value->getPath()); - } elseif ('_route_params' === $key) { - foreach ($value as $key => $v) { - $attributes['_route_params'][$key] = $this->varToString($v); - } - } else { - $attributes[$key] = $this->varToString($value); + $value = $value->getPath(); } + + $attributes[$key] = $value; } $content = null; diff --git a/src/Symfony/Component/HttpKernel/DataCollector/Util/ValueExporter.php b/src/Symfony/Component/HttpKernel/DataCollector/Util/ValueExporter.php index f3aeb80cb227c..b378d093cd1e2 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/Util/ValueExporter.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/Util/ValueExporter.php @@ -19,23 +19,38 @@ class ValueExporter /** * Converts a PHP value to a string. * - * @param mixed $value The PHP value + * @param mixed $value The PHP value + * @param integer $depth only for internal usage + * @param Boolean $deep only for internal usage * * @return string The string representation of the given value */ - public function exportValue($value) + public function exportValue($value, $depth = 1, $deep = false) { if (is_object($value)) { return sprintf('Object(%s)', get_class($value)); } if (is_array($value)) { + if (empty($value)) { + return '[]'; + } + + $indent = str_repeat(' ', $depth); + $a = array(); foreach ($value as $k => $v) { - $a[] = sprintf('%s => %s', $k, $this->exportValue($v)); + if (is_array($v)) { + $deep = true; + } + $a[] = sprintf('%s => %s', $k, $this->exportValue($v, $depth + 1, $deep)); + } + + if ($deep) { + return sprintf("[\n%s%s\n%s]", $indent, implode(sprintf(", \n%s", $indent), $a), str_repeat(' ', $depth - 1)); } - return sprintf("Array(%s)", implode(', ', $a)); + return sprintf("[%s]", implode(', ', $a)); } if (is_resource($value)) { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy

KeyValueKeyValue
{{ key }}{{ data[key]|json_encode(64 b-or 256) }}
{{ profiler_dump(data[key]) }}