Php 将变量发送到Symfony模板文件
我试图将一个变量发送到一个不在典型位置的twig文件,通常我通过指定视图在Bundle中的路径来加载视图,但我要将变量发送到的文件在层次上与其他twig模板不在同一级别 我有一个如下所示的控制器:Php 将变量发送到Symfony模板文件,php,symfony,model-view-controller,twig,Php,Symfony,Model View Controller,Twig,我试图将一个变量发送到一个不在典型位置的twig文件,通常我通过指定视图在Bundle中的路径来加载视图,但我要将变量发送到的文件在层次上与其他twig模板不在同一级别 我有一个如下所示的控制器: public function fooAction(Request $request) { *//Query* return $this->render('Bundle:file.html.twig', array('varToSend' => $queryResult)
public function fooAction(Request $request)
{
*//Query*
return $this->render('Bundle:file.html.twig', array('varToSend' => $queryResult));
}
我很确定Bundle:file.html.twig是错误的,但我不知道如何在twig中指定相关路径。您必须使用这样的路径:
return $this->render('Bundle:Something:file.html.twig', array(
'varToSend' => $queryResult
));
并将您的文件放在此文件夹中:
src/Bundle/Resources/views/Something/file.html.twig
从容器中获取的细枝不会使用任意路径,但您可以初始化自己的细枝:
$twig = new \Twig_Environment(new \Twig_Loader_String());
$rendered = $twig->render(
file_get_contents('/path/to/your/file.html.twig'),
array('varToSend' => $queryResult)
);
如果您需要多个地方,请考虑将它作为一个SyfFoY服务,以便不每次初始化Tigg环境。 请注意,在本例中,渲染器没有任何Symfony的细枝扩展,您必须手动添加它们
如果可能,尽量避免这种情况,并将模板放入
app/Resources/views
或src/AppBundle/Resources/views
目录。到file.html.twig
的路径是什么?Bundle
的路径是什么?为什么需要声明$twig
?@A.L,因为从容器中获得的twig
不适用于任意路径。Symfony不会将\Twig\u Loader\u String()
传递给它,因此它希望模板位于特定位置。我建议您使用\Twig\u环境(…
不是常见的方式)将此注释添加到问题中。