Symfony2: phpinfo() использует шаблон ветки для макета?

Twig не будет обрабатывать теги PHP. Следовательно, создание phpinfo() страницы на основе макета (скажем, base.html.twig) представляет собой сложную задачу.

Можно ли сбросить HTML-содержимое phpinfo() в какую-то переменную и передать его как содержимое тела в макет? Или есть лучший способ продолжить?


person Jérôme Verstrynge    schedule 03.10.2015    source источник
comment
об_старт(); $выход = phpinfo(); ob_end_clean();   -  person ka_lin    schedule 03.10.2015


Ответы (3)


Просто захватите вывод phpinfo() с буферизацией вывода и передайте его в шаблон.

ob_start();
phpinfo();
$phpinfo = ob_get_clean();

echo $twig->render('phpinfo.html.twig', array('phpinfo' => $phpinfo));
person Federkun    schedule 03.10.2015
comment
Для стилизации в вашем шаблоне используйте ‹pre›‹pre› ... если вы используете bootstrap, добавьте класс prettyprint в pre - person Nickolaus; 04.10.2015

Это дополнение к ответу Федеркуна. В контроллере:

ob_start();
phpinfo();
$phpinfo = ob_get_contents();
ob_end_clean();
return $this->render('phpinfo.html.twig', array(
    'phpinfo'=>$phpinfo,
));

Не забудьте поставить | сырой в ветке!

{{ phpinfo | raw }}
person sneaky    schedule 26.01.2018

С Symfony, если вам просто нужно проверить вывод phpinfo(), вы можете использовать dump(phpinfo()) внутри контроллера, и вы получите основной вывод phpinfo(). Также работает, чтобы вызвать phpinfo() в качестве параметра объекта Response, а затем вернуть его:

class DefaultController extends AbstractController
{
   /**
    * @Route("/", name="default")
    */
   public function index()
   {
       dump(phpinfo());

       // Then return something else, or call directly phpinfo() on return, like bellow
       return new Response(phpinfo());
   }
}
person Karobwe    schedule 28.09.2020