我只是设置了一个布局钩子来简化我自己的一些工作,但是,我刚刚意识到我的探查器已经消失了。我不太清楚我需要做些什么来恢复它。
如果我重新显示$config['enable_hooks'] = FALSE
个人资料,但会破坏我的布局。我假设我必须在我的钩子类中添加一点,但我不确定此时的位置或内容。
class Layout {
public function index()
{
$CI =& get_instance();
$current_output = $CI->output->get_output();
if ($CI->uri->segment(1) == 'admin')
$layout_file = APPPATH . 'views/admin/layout.php';
else
$layout_file = APPPATH . 'views/frontend/layout.php';
$layout = $CI->load->file($layout_file, true);
$mod_output = str_replace("{yield}", $current_output, $layout);
//echo $layout_file;
echo $mod_output;
}
}
当然,我已在我的控制器中设置$this->output->enable_profiler(TRUE);
。
非常感谢任何建议或帮助!
答案 0 :(得分:0)
Profiler消失的原因是因为在Output :: _ display()函数中运行Profiler取决于Output对象。
正如docs解释的那样,当你挂钩“display_override”点时,你会阻止调用Output :: _ display()。
如果要在Layout挂钩中输出Profiler,则需要执行以下操作:
class Layout {
public function index()
{
$CI =& get_instance();
$current_output = $CI->output->get_output();
if ($CI->uri->segment(1) == 'admin')
$layout_file = APPPATH . 'views/admin/layout.php';
else
$layout_file = APPPATH . 'views/frontend/layout.php';
$layout = $CI->load->file($layout_file, true);
$mod_output = str_replace("{yield}", $current_output, $layout);
$CI->load->library('profiler');
if ( ! empty($CI->output->_profiler_sections))
{
$CI->profiler->set_sections($CI->output->_profiler_sections);
}
// If the output data contains closing </body> and </html> tags
// we will remove them and add them back after we insert the profile data
if (preg_match("|</body>.*?</html>|is", $output))
{
$mod_output = preg_replace("|</body>.*?</html>|is", '', $mod_output);
$mod_output .= $CI->profiler->run();
$mod_output .= '</body></html>';
}
else
{
$mod_output .= $CI->profiler->run();
}
//echo $layout_file;
echo $mod_output;
}
}
我所做的一切就是从Output :: _ display()获取一段代码来处理渲染Profiler输出并将其插入其余的钩子。