Php 找不到模板错误-无脂肪框架

Php 找不到模板错误-无脂肪框架,php,fat-free-framework,Php,Fat Free Framework,我已经完成了无脂肪框架文档中的示例,有一个示例我无法使用。具体如下: $f3=require('lib/base.php'); $f3->route('GET /', function($f3) { $f3->set('name','world'); $template=new Template; echo $template->render('template.htm'); // Above lines

我已经完成了无脂肪框架文档中的示例,有一个示例我无法使用。具体如下:

$f3=require('lib/base.php');
$f3->route('GET /',
    function($f3) {
        $f3->set('name','world');
        $template=new Template;
        echo $template->render('template.htm');
        // Above lines can be written as:
        // echo Template::instance()->render('template.htm');
    }
);
$f3->run();
我收到一个找不到模板的错误。错误指向template.htm文件正在渲染的行,并抱怨Preview->render(即其超类,而不是template->render)。我甚至没有在代码库中看到预览类的文件

有趣的是,如果我对视图示例(如下)使用相同的文件,它就可以正常工作

$f3=require('lib/base.php');
$f3->route('GET /',
    function($f3) {
        $f3->set('name','world');
        $view=new View;
        echo $view->render('template.htm');
        // Previous two lines can be shortened to:
        // echo View::instance()->render('template.htm');
    }
);
$f3->run();
然而,如果我要使用这个框架,我希望能够利用它的模板功能


有此框架经验的人是否知道会出现什么问题?我从Github()下载了代码。

使用.html而不是.htm。是的,这真的很重要。

我没有使用无脂肪框架的经验,但是有一个关于如何调试这个问题的通用指针


显然,无脂框架中的某些代码引发了“未找到文件”异常。试着用无脂肪框架3.5.1版调试我遇到的问题

出现此问题的原因是,框架OOB(至少在这个版本中)与一个示例连接在一起,以便在根无脂肪框架文件夹的“ui/”子文件夹中查找模板

是什么告诉我的?好。。。OOB config.ini包含以下内容:

[globals]
DEBUG=3
UI=ui/
要轻松解决此问题,请执行以下操作之一:

  • 将文件“template.htm”放入“ui/”子文件夹中
  • 在config.ini中将“ui/”子文件夹重命名为任何您喜欢的名称,并将“template.htm”文件放在该位置

  • 提示:确保指定的任何UI路径都以a/结尾,如果需要指定多个路径,可以使用|或或;分隔符(确保每个路径以/)结尾。

    默认情况下,F3使用主文件所在的文件夹(启动框架实例的文件夹)。您可以通过为
    UI
    参数设置新路径来更改此行为。简言之:

    $f3 = \Base::instance();
    $f3->set('UI', path_to_your_templates);
    
    假设您具有以下结构:

    - app
    -- views
    --- template.htm (your template)
    - public
    -- index.php (where your init the framework)
    -- (template files are expected here by default)
    
    public/index.php看起来像:

    $f3 = \Base::instance();
    $f3->set('UI',  __DIR__.'/../app/views/');
    $f3->route('GET /',
    function($f3) {
        echo  Template::instance()->render('template.htm');
    }
    

    希望有帮助。

    你为什么这么说?没关系。框架不关心模板文件扩展名。因为我很确定我们过去有过这个问题,可以通过将文件重命名为.html来解决。我可以看到
    视图
    模板
    之间的一个区别是后者需要
    临时
    目录(默认值:
    tmp/
    )。请确保此目录存在且可写。使用
    模板
    类时,请确保
    UI
    var设置为
    Template.htm
    文件所在的路径。这两条注释都帮助我解决了问题!!非常感谢你!如果你们中有人想将两者结合成一个解决方案,我将标记为正确。