使用Symfony框架:
"sensio/framework-extra-bundle": "^5.1"
+
"symfony/framework-bundle": "^4.1"
使用默认配置。
收到错误:The controller must return a response (Array() given).
示例代码:
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
/**
* @Route("/")
*/
class IndexController extends Controller
{
/**
* @Route("", name="index")
* @Template()
*/
public function index()
{
return [];
}
}
我尝试添加:
sensio_framework_extra:
view:
annotations: true
但这不起作用
我有一个与"symfony/framework-bundle": "^4.0"
相同的示例项目,并且可以正常工作。
答案 0 :(得分:0)
看看@Template annotation documentation。它指出:
从捆绑软件的4.0版本开始,@ Template注释仅支持Twig(并且仅当不与Symfony模板组件一起使用时-在模板中未设置
templating
条目)framework
配置设置。
我想您正在使用Symfony模板组件,在这种情况下将无法使用。或者,您可能也没有正确命名模板文件-应该以控制器和操作名称命名。
还是更好,看看Symfony's Best Practices for Templates,它建议您将模板存储在根项目的templates/
目录中,而不是捆绑软件的Resources/views/
文件夹中。这意味着您不再引用@App/Index/Index.html
之类的模板,也不再使用神奇的@Template
注释。相反,您可以像这样从控制器中显式调用模板:
/**
* @Route("", name="index")
*/
public function index()
{
return $this->render('index/index.html.twig');
}
最后,这似乎很明显,但是请确保在项目(composer require symfony/twig-bundle
中安装了Twig。
答案 1 :(得分:0)
事实证明,我是从头开始创建一个新项目的,但是没有使用通常会安装所有依赖项的symfony/website-skeleton
软件包。因此,不仅仅是我的@Template
注释不起作用,还因为没有安装Twig,没有模板在起作用。
我运行了composer require twig-bundle
命令,它解决了问题。