Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 从细枝模板内部导入HTML文件_Php_Html_Templates_Symfony_Twig - Fatal编程技术网

Php 从细枝模板内部导入HTML文件

Php 从细枝模板内部导入HTML文件,php,html,templates,symfony,twig,Php,Html,Templates,Symfony,Twig,我想从细枝模板内部导入一个HTML文件。HTML文件位于/var/files/5(无扩展名)。我呈现的模板如下所示: $path = $_SERVER['DOCUMENT_ROOT'] . '/../var/files/5'; $content = $this->get('templating')->render('ProConvocationBundle:Default:definitive-view.html.twig', array('path' => $path));

我想从细枝模板内部导入一个HTML文件。HTML文件位于
/var/files/5
(无扩展名)。我呈现的模板如下所示:

$path = $_SERVER['DOCUMENT_ROOT'] . '/../var/files/5';
$content = $this->get('templating')->render('ProConvocationBundle:Default:definitive-view.html.twig', array('path' => $path));
{% include path %}
在Twig模板中,我导入HTML文件,如下所示:

$path = $_SERVER['DOCUMENT_ROOT'] . '/../var/files/5';
$content = $this->get('templating')->render('ProConvocationBundle:Default:definitive-view.html.twig', array('path' => $path));
{% include path %}
但它找不到路径:找不到模板“/myDocumentRoot/。/app/var/files/5”


我也尝试过几种相对的方法,但都没有成功。知道如何实现它吗?

在Symfony中,您应该使所有内容都与内核根目录相关,即
app
目录

$uploadedTemplatesDir = $this->get('kernel')->getRootDir() . '/../var/files';
然后将其添加到模板加载程序中

$this->get('twig.loader')->addPath($uploadedTemplatesDir);
是什么导致了这种异常? 在稍微挖掘细枝代码后,以下内容似乎导致了此异常:

Twig尝试从已知路径/名称空间加载文件,即捆绑包名称(如
/var/www/myApplication/src/AcmeBundle/Resources/views
),而
app
路径为
myApplication/app/Resources/views
)。无论如何,它不接受绝对路径,因为它总是尝试将已知路径添加到给定文件的开头

<?php
// Twig/Loader/Filesystem.php

class Twig_Loader_Filesystem {

// ...
protected function findTemplate()
{
    // ...
    foreach ($this->paths[$namespace] as $path) {
        if (is_file($path.'/'.$shortname)) {
            return $this->cache[$name] = $path.'/'.$shortname;
        }
    }

    throw new Twig_Error_Loader(sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace])));
}

/var/files/5
和绝对路径还是相对于文档根的路径?这有点不清楚,因为您正在使用文档根构建路径,但是
/var/…
也可能是绝对路径。@thormeier-这是文档根的绝对路径。谢谢您的回答。我最终实现了将原始内容传递到细枝模板,而不是尝试从模板内部读取它。但你的选择也很好。