我在瘦框架应用程序中遇到错误。我不知道为什么树枝视图不起作用。 twig-view在供应商目录中下载。 这是我的索引文件
<?php
require __DIR__ . '/vendor/autoload.php';
// Settings
$config = [
'settings' => [
'displayErrorDetails' => true,
'addContentLengthHeader' => false,
],
];
$app = new \Slim\App($config);
// Get container
$container = $app->getContainer();
// Register component on container
$container['view'] = function ($container) {
$view = new \Slim\Views\Twig( __DIR__ . '/resources/views', [
'cache' => false
]);
// Instantiate and add Slim specific extension
$view->addExtension(new Slim\Views\TwigExtension(
$container['router'],
$container['request']->getUri()
));
return $view;
};
// Home
$app->get('/home','index');
function index($request, $response, $args)
{
return $this->view->render($response, 'home.twig'); // here is the error
}
$app->run();
我收到错误$ this this关键字 错误详情
Details
Type: Error
Message: Using $this when not in object context
File: C:\xampp\htdocs\slim\api\index.php
Line: 42
答案 0 :(得分:1)
如果没有闭包
,则无法使用此功能如果使用Closure实例作为路由回调,则闭包的状态将绑定到Container实例。这意味着您可以通过
$this
关键字访问Closure内部的DI容器实例。
(参考:http://www.slimframework.com/docs/objects/router.html)
将闭包分配给变量
时,可以将其分开$indexRoute = function ($request, $response, $args)
{
return $this->view->render($response, 'home.twig'); // here is the error
}
$app->get('/home', $indexRoute);
答案 1 :(得分:0)
您正在宣传路线,请尝试
super.getClass()
您应该调用// This callback will process GET request to /index URL
$app->get('/index', function($request, $response, $args) {
return $this->view->render($response, 'home.twig');
});
方法来注册路由,而不是声明一个函数。
修改
也可以从回调中“分离”路由声明。您可以创建单独的类(MVC模式中的a-la控制器),如下所示:
$app
我建议你阅读appropriate section of the documentation。这很简单。