簡體   English   中英

如何將PHP DebugBar添加到Twig布局?

[英]How to add PHP DebugBar to Twig layout?

PHP DegugBar有一個擴展,可以顯示渲染了哪些Twig模板。

我在這里找到了一個演示,但是如果您看一下他們是如何做的,他們實際上是用純PHP渲染布局的這有點違反了Twig的觀點,Twig擁有自己的布局系統。

問題是一個問題22:我需要將調試欄渲染到Twig變量中,以便可以將其放在Twig布局中,但是如果我已經渲染了調試欄,它將無法捕獲我這樣的事實。正在渲染Twig模板!

因此,我不確定如何執行此操作。 有任何想法嗎?

創建一個自定義的Twig擴展以呈現呈現調試欄所需的代碼。 這樣,您可以執行{{ debug_bar() }}來渲染調試欄:

class DebugBarExtension extends \Twig_Extension
{
    public function getFunctions()
    {
        return [
            new \Twig_SimpleFunction('debug_bar', [$this, 'renderDebugBar']),
        ];
    }

    public function renderDebugBar()
    {
        // ... render and return the debug bar
    }
}

\\DebugBar\\JavascriptRenderer::renderOnShutdownWithHead可能有用。

例如,按照@Wouter的建議創建一個Twig函數,但是與其立即渲染調試欄,不如將其注冊為稍后渲染,就在關機之前。

我不確定為什么要使用Twig渲染DebugBar,除非您嘗試測量渲染性能或類似的性能(對於DebugBar IMO來說並不需要,因為它永遠不會進入生產狀態)。

無論如何,您都不需要特殊的插件, 工件 ,類或代碼來在Twig呈現的頁面中顯示DebugBar。 您可以簡單地執行以下操作:

1)在用於將變量發送到Twig的Array中添加DebugBar渲染的結果( HeadBody )。 例:

$template_vars['debugbar_Head'] = $debugbarRenderer->renderHead();
$template_vars['debugbar_Body'] = $debugbarRenderer->render();

2)在模板中添加變量:

<head>
  -- other stuff ---
  {{ debugbar_Head | raw }}
</head>

<body>
  {{ debugbar_Body | raw }}
  -- other stuff ---
</body>

重要提示 :請確保您的“ debugbar_Head”位於head標記的末尾,“ debugbar_Body”位於body標記的開始(出於某種原因,這有助於防止罕見的渲染錯誤)。

3)正常渲染您的模板:

echo $view->render('your-template-path', $template_vars);

享受Twig呈現的頁面,其底部具有功能齊全的DebugBar。

注意:網絡上有一些東西可以促進Twig和DebugBar的“混合”。 請嘗試使用它們之前,請檢查它們是否與框架無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM