【发布时间】:2015-09-23 11:18:43
【问题描述】:
我是 symfony 的新手,我想使用 PHP 模板引擎。以下是我为其工作所遵循的步骤。
1.在config.yml中启用PHP模板引擎
templating:
engines: ['twig', 'php']
2.在 routing.yml 中定义我的控制器路径和默认值
hello:
path: /hello/{name}
defaults: { _controller: AppBundle:Hello:index, name:World }
3.创建HelloController.php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class HelloController extends Controller
{
public function indexAction($name)
{
return $this->render('hello/name.html.php', array(
'name'=>$name
));
}
}
4.创建视图\app\Resources\views\Hello\name.html.php
<!-- app/Resources/views/Hello/name.html.php -->
Hello <?php echo $name ?>!
但是当我尝试访问http://127.0.0.1:8000/hello 时,它会显示以下错误
模板“hello/name.html.php”不存在。
500 内部服务器错误 - InvalidArgumentException
我将模板文件夹名称从“Hello”更改为“hello”,但仍然出现同样的错误。也尝试过像这样渲染模板
return $this->render(
'AppBundle:Hello:index.html.php',
array('name' => $name)
);
但不走运,我一定是在这里遗漏了一些东西。有人可以指导我正确的方向吗?
注意: hello/name.html.twig 正在加载,没有任何错误
谢谢!
【问题讨论】:
-
symfony.com/doc/current/cookbook/templating/PHP.html这个页面说需要使用注解: /** * @Template(engine="php") */ 你试过了吗?
-
文件夹名称应为
hello并在更改后清除缓存。