Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9d958d6

Browse filesBrowse files
[Debug][WebProfilerBundle] Fix setting file link format
1 parent e1ca89b commit 9d958d6
Copy full SHA for 9d958d6

File tree

5 files changed

+31
-8
lines changed
Filter options

5 files changed

+31
-8
lines changed

‎src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ class FrameworkBundle extends Bundle
6161
{
6262
public function boot()
6363
{
64+
if (!ini_get('xdebug.file_link_format') && !get_cfg_var('xdebug.file_link_format')) {
65+
ini_set('xdebug.file_link_format', $this->container->getParameter('debug.file_link_format'));
66+
}
6467
ErrorHandler::register(null, false)->throwAt($this->container->getParameter('debug.error_handler.throw_at'), true);
6568

6669
if ($this->container->hasParameter('kernel.trusted_proxies')) {

‎src/Symfony/Bundle/WebProfilerBundle/Controller/ExceptionController.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/WebProfilerBundle/Controller/ExceptionController.php
+5-3Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bundle\WebProfilerBundle\Controller;
1313

14+
use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
1415
use Symfony\Component\HttpKernel\Profiler\Profiler;
1516
use Symfony\Component\Debug\ExceptionHandler;
1617
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
@@ -30,11 +31,12 @@ class ExceptionController
3031
protected $debug;
3132
protected $profiler;
3233

33-
public function __construct(Profiler $profiler = null, Environment $twig, $debug)
34+
public function __construct(Profiler $profiler = null, Environment $twig, $debug, FileLinkFormatter $fileLinkFormat = null)
3435
{
3536
$this->profiler = $profiler;
3637
$this->twig = $twig;
3738
$this->debug = $debug;
39+
$this->fileLinkFormat = $fileLinkFormat;
3840
}
3941

4042
/**
@@ -58,7 +60,7 @@ public function showAction($token)
5860
$template = $this->getTemplate();
5961

6062
if (!$this->twig->getLoader()->exists($template)) {
61-
$handler = new ExceptionHandler($this->debug, $this->twig->getCharset());
63+
$handler = new ExceptionHandler($this->debug, $this->twig->getCharset(), $this->fileLinkFormat);
6264

6365
return new Response($handler->getContent($exception), 200, array('Content-Type' => 'text/html'));
6466
}
@@ -98,7 +100,7 @@ public function cssAction($token)
98100
$template = $this->getTemplate();
99101

100102
if (!$this->templateExists($template)) {
101-
$handler = new ExceptionHandler($this->debug, $this->twig->getCharset());
103+
$handler = new ExceptionHandler($this->debug, $this->twig->getCharset(), $this->fileLinkFormat);
102104

103105
return new Response($handler->getStylesheet($exception), 200, array('Content-Type' => 'text/css'));
104106
}

‎src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<argument type="service" id="profiler" on-invalid="null" />
2828
<argument type="service" id="twig" />
2929
<argument>%kernel.debug%</argument>
30+
<argument type="service" id="debug.file_link_formatter" />
3031
</service>
3132

3233
<service id="web_profiler.csp.handler" class="Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler">

‎src/Symfony/Bundle/WebProfilerBundle/Tests/DependencyInjection/WebProfilerExtensionTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/WebProfilerBundle/Tests/DependencyInjection/WebProfilerExtensionTest.php
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class WebProfilerExtensionTest extends TestCase
3131
public static function assertSaneContainer(Container $container, $message = '', $knownPrivates = array())
3232
{
3333
$errors = array();
34+
$knownPrivates[] = 'debug.file_link_formatter.url_format';
3435
foreach ($container->getServiceIds() as $id) {
3536
if (in_array($id, $knownPrivates, true)) { // to be removed in 4.0
3637
continue;

‎src/Symfony/Component/Debug/ExceptionHandler.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Debug/ExceptionHandler.php
+21-5Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public function __construct($debug = true, $charset = null, $fileLinkFormat = nu
4040
{
4141
$this->debug = $debug;
4242
$this->charset = $charset ?: ini_get('default_charset') ?: 'UTF-8';
43-
$this->fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
43+
$this->fileLinkFormat = $fileLinkFormat;
4444
}
4545

4646
/**
@@ -355,13 +355,29 @@ private function formatClass($class)
355355
private function formatPath($path, $line)
356356
{
357357
$file = $this->escapeHtml(preg_match('#[^/\\\\]*+$#', $path, $file) ? $file[0] : $path);
358-
$fmt = $this->fileLinkFormat;
358+
$fmt = $this->fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
359+
360+
if (!$fmt) {
361+
return sprintf('<span class="block trace-file-path">in <a title="%s%3$s"><strong>%s</strong>%s</a></span>', $this->escapeHtml($path), $file, 0 < $line ? ' line '.$line : '');
362+
}
363+
364+
if (\is_string($fmt)) {
365+
$i = strpos($f = $fmt, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: strlen($f);
366+
$fmt = array(substr($f, 0, $i)) + preg_split('/&([^>]++)>/', substr($f, $i), -1, PREG_SPLIT_DELIM_CAPTURE);
367+
368+
for ($i = 1; isset($fmt[$i]); ++$i) {
369+
if (0 === strpos($path, $k = $fmt[$i++])) {
370+
$path = substr_replace($path, $fmt[$i], 0, strlen($k));
371+
break;
372+
}
373+
}
359374

360-
if ($fmt && $link = is_string($fmt) ? strtr($fmt, array('%f' => $path, '%l' => $line)) : $fmt->format($path, $line)) {
361-
return sprintf('<span class="block trace-file-path">in <a href="%s" title="Go to source">%s (line %d)</a></span>', $this->escapeHtml($link), $file, $line);
375+
$link = strtr($fmt[0], array('%f' => $path, '%l' => $line));
376+
} else {
377+
$link = $fmt->format($path, $line);
362378
}
363379

364-
return sprintf('<span class="block trace-file-path">in <a title="%s line %3$d"><strong>%s</strong> (line %d)</a></span>', $this->escapeHtml($path), $file, $line);
380+
return sprintf('<span class="block trace-file-path">in <a href="%s" title="Go to source"><strong>%s</string>%s</a></span>', $this->escapeHtml($link), $file, 0 < $line ? ' line '.$line : '');
365381
}
366382

367383
/**

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.