首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SLIM错误类型: Slim\Exception\ContainerValueNotFoundException

SLIM错误类型: Slim\Exception\ContainerValueNotFoundException
EN

Stack Overflow用户
提问于 2018-10-02 17:58:00
回答 3查看 746关注 0票数 1

我对在twig-view中使用超薄框架还很陌生。当我尝试从超薄容器中渲染视图时,我看到了这个错误,这是返回错误页面的代码。

代码语言:javascript
复制
<?php

$app->get('/home', function($request, $response){
return $this->$view->render($response, 'home.twig');    
}); 

?>

上面的代码返回了这个错误Slim application error,但是当我像下面这样返回一个简单的字符串时:

代码语言:javascript
复制
<?php

$app->get('/home', function($request, $response){
return "Hello World!";  
}); 

?>

它输出Hello World!在浏览器上是正确的,但当我尝试这样做时:

代码语言:javascript
复制
<?php

$app->get('/home', function($request, $response){
return $this->$view->render($response, 'home.twig');    
}); 

?>

它返回错误Slim application error。下面的代码是我的索引页面。

代码语言:javascript
复制
<?php
session_start();
require __DIR__ . '/../vendor/autoload.php';

$app = new \Slim\App([
    'settings' => [
        'displayErrorDetails' => true,
    ]
]);

$container = $app->getContainer();
$container['view'] = function($container){
    $view = new \Slim\Views\Twig(__DIR__ . '/../resources/views/home.twig', [
        'cache' => false,
    ]); 

    $view->addExtension(new Slim/Views/TwigExtension(

    $container->router,
    $container->request->getUri()
));

return $view;
};



require __DIR__ . '/../app/route.php';

?>

在……上面

我做错了什么?

EN

回答 3

Stack Overflow用户

发布于 2018-10-02 19:34:48

问题是您正在尝试访问$this->$view,但是容器只知道$this->view

票数 1
EN

Stack Overflow用户

发布于 2018-10-05 07:54:41

您应该定义视图文件夹,而不是文件。

代码语言:javascript
复制
$container['view'] = function ($container) {

  $view = new \Slim\Views\Twig(__DIR__ . '/../resources/views', [
    'cache' => false
  ]);

  $view->addExtension(new \Slim\Views\TwigExtension(
    $container->router,
    $container->request->getUri()
  ));

  return $view;
}

在你的route中你可以做到这一点

代码语言:javascript
复制
$app->get('/', function ($request, $response) {
  return $this->container->view->render($response, 'home.twig');
});

请注意,home.twig必须在views文件夹内。

票数 0
EN

Stack Overflow用户

发布于 2018-11-08 00:40:56

确保您的.htaccess文件存在于根文件夹中:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52606054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档