SLIM ERROR TYPE: Slim \ Exception \ ContainerValueNotFoundException - PullRequest
0 голосов
/ 02 октября 2018

Я довольно новичок в использовании тонкого фреймворка с видом на веточку.Я вижу эту ошибку, когда пытаюсь отобразить представление из тонкого контейнера, этот код возвращает страницу с ошибкой.

<?php

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

?>

Приведенный выше код возвращает эту ошибку Ошибка тонкого приложения ,но когда я возвращаю простую строку, как в примере ниже:

<?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 .Приведенный ниже код является моей страницей указателя.

<?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';

?>

Вкл.

Что я не правильно делаю?

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Вы должны определить свою папку представлений, а не файл.

$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 должен быть внутрипапка просмотров.

0 голосов
/ 07 ноября 2018

Убедитесь, что ваш файл .htaccess находится в корневой папке с:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
0 голосов
/ 02 октября 2018

Проблема в том, что вы пытаетесь получить доступ к $this->$view, но контейнер знает только о $this->view.

...