Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将变量发送到Symfony模板文件_Php_Symfony_Model View Controller_Twig - Fatal编程技术网

Php 将变量发送到Symfony模板文件

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)

我试图将一个变量发送到一个不在典型位置的twig文件,通常我通过指定视图在Bundle中的路径来加载视图,但我要将变量发送到的文件在层次上与其他twig模板不在同一级别

我有一个如下所示的控制器:

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环境(…
不是常见的方式)将此注释添加到问题中。