Php 从细枝模板内部导入HTML文件
我想从细枝模板内部导入一个HTML文件。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));
/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-这是文档根的绝对路径。谢谢您的回答。我最终实现了将原始内容传递到细枝模板,而不是尝试从模板内部读取它。但你的选择也很好。