我对在twig-view中使用超薄框架还很陌生。当我尝试从超薄容器中渲染视图时,我看到了这个错误,这是返回错误页面的代码。
<?php
$app->get('/home', function($request, $response){
return $this->$view->render($response, 'home.twig');
});
?>上面的代码返回了这个错误Slim application error,但是当我像下面这样返回一个简单的字符串时:
<?php
$app->get('/home', function($request, $response){
return "Hello World!";
});
?>它输出Hello World!在浏览器上是正确的,但当我尝试这样做时:
<?php
$app->get('/home', function($request, $response){
return $this->$view->render($response, 'home.twig');
});
?>它返回错误Slim application error。下面的代码是我的索引页面。
<?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';
?>在……上面
我做错了什么?
发布于 2018-10-02 19:34:48
问题是您正在尝试访问$this->$view,但是容器只知道$this->view。
发布于 2018-10-05 07:54:41
您应该定义视图文件夹,而不是文件。
$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中你可以做到这一点
$app->get('/', function ($request, $response) {
return $this->container->view->render($response, 'home.twig');
});请注意,home.twig必须在views文件夹内。
发布于 2018-11-08 00:40:56
确保您的.htaccess文件存在于根文件夹中:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]https://stackoverflow.com/questions/52606054
复制相似问题