Slim v3和trick(查看页面显示页面未找到错误)


Slim v3 and twig ( View Page displays page not found error)

我已经按照composer安装了slim framework 3和trick模板。当我调用函数时http://localhost/elec/helloo/sandesh它在slim 3文档中显示Hello,Sandesh如下。

但当我尝试调用视图页面时(在templates文件夹内)。

它显示一个错误页面Slim Application error由于以下错误,应用程序无法运行错误描述

代码已处理(显示hello,{name}来自函数)

$app = new 'Slim'App;
$app->get('/hello/{name}', function (Request $request, Response $response) {
    $name = $request->getAttribute('name');
    $response->getBody()->write("Hello, $name");
    return $response;
}); 

代码错误(从函数调用查看页面时显示错误)

$settings =  [
    'settings' => [
        'displayErrorDetails' => true,
    ],
];
$app = new Slim'App($settings);
// Get container
$container = $app->getContainer();
// Register component on container
$container['view'] = function ($container) {
    return new 'Slim'Views'PhpRenderer("templates/");
};
// Render Twig template in route
$app->get('/helloo/{name}', function ($request, $response, $args) {
    return $this->view->render($response, 'view1.html', [
        'name' => $args['name']
    ]);
})->setName('profile');

路径详细信息

elec>
    >>cache
    >>templates
               >>>view1.html
    >>vender
    >>.htaccess
    >>composer.json
    >>composer.lock
    >>index.php

在传递模板位置时,必须提供一个完整的路径(从运行的index.php文件的位置开始:

<?php
    $container['view'] = function ($container) {
        return new 'Slim'Views'PhpRenderer(__DIR__ . "/../path/to/templates/");
    };

试试看,祝你好运。

注意:我使用的是同一行,但使用了Twig渲染:

<?php
    $container['view'] = function ($container) {
        return new 'Slim'Views'Twig(__DIR__ . "/../path/to/templates/");
    };
$app = new 'Slim'App([
    'settings' => [
        'displayErrorDetails' => true,
    ]
]);
// Calling twigview from controller
$container = $app->getContainer();
// Register component on container
$container['view'] = function ($container) {
    $view = new 'Slim'Views'Twig('templates/views',[
        'cache' => false,
    ]);
    $view->addExtension(new 'Slim'Views'TwigExtension(
        $container->router,
        $container->request->getUri()
    ));
    return $view;
};
$app->get('/home', function ($request, $response) {
    return $this->view->render($response, 'home.twig');
});