我试图按照symfony教程:
http://symfony.com/doc/current/book/page_creation.html#step-1-create-the-route
但在某个时刻我决定使用php代替twig。
所以我在第3步尝试使用模板,我的页面显示了这一行
extend('::base.html.php') ?> Hello escape($name) ?>!
不确定这是否是教程中的错误,因为他们通常选择使用twig工作或者我做错了什么。 它就像我的页面在尝试扩展它时无法识别php。
这是我正在尝试渲染的页面的完整代码:
<!-- src/Acme/HelloBundle/Resources/views/Hello/index.html.php -->
<?php $view->extend('::base.html.php') ?>
Hello <?php echo $view->escape($name) ?>!
我在这个网址运行页面http:// localhost:8080 / web / app_dev.php / hello / Peter
这是我的控制者:
class HelloController extends Controller
{
public function indexAction($name)
{
// return $this->render(
// 'AcmeHelloBundle:Hello:index.html.twig',
// array('name' => $name)
// );
// render a PHP template instead
return $this->render(
'AcmeHelloBundle:Hello:index.html.php',
array('name' => $name)
);
}
}
和我的基地:
!-- app/Resources/views/base.html.php -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php $view['slots']->output('title', 'Welcome!') ?></title>
<?php $view['slots']->output('stylesheets') ?>
<link rel="shortcut icon" href="<?php echo $view['assets']->getUrl('favicon.ico') ?>" />
</head>
<body>
<?php $view['slots']->output('_content') ?>
<?php $view['slots']->output('javascripts') ?>
</body>
</html>
请注意我使用的是/ web /,它不在教程中。这可能与问题有关吗?因为我告诉基础模型是::?我该如何解决这个问题?
答案 0 :(得分:3)
如果您查看文档中的"How to use PHP instead of Twig for Templates"文章,您会发现需要将PHP注册为模板引擎。
假设您使用Yaml作为配置格式:
# app/config/config.yml
framework:
# ...
templating: { engines: ['twig', 'php'] }