Bonjour à toutes et à tous,
Je commence l'apprentissage du framwork Slim3 et je suis donc en train de faire le tuto sur Slimframework 3 de Grafikart.
Mon problème intervient avec Twig View.
Lorsque je l'instancie dans le fichier container.php j'obtient l'erreur suivantes :
fatal error : class Slim\View not found in C:\......vendor\slim\views\Twig.php on line 45
Le fichier Twig.php est bien présent dans le vendor\slim\view.
J'ai updaté avec composer au moins 10 fois :).
J'ai googlé cette erreur sur différents forums, et je ne trouve aucunes réponses...mon code a une erreur mais impossible à trouver...
Je vous donne mes tests.
Config server : Wamp>PHP 5.6 ou 7.
Mon arborescence fichiers
app
Controllers
PagesController.php
views
pages
home.twig
container.php
public
index.php
index.php:
<?php
require '../vendor/autoload.php';
$app = new \Slim\App([
'settings' => [
'displayErrorDetails' => true
]
]);
require '../app/container.php';
$app->get('/', \App\Controllers\PagesController::class.':home');
$app->run();
?>
JSON :
{
"name": "ex/d",
"description": "test",
"require": {
"symfony/yaml": "^3.3",
"php": ">=5.6",
"slim/slim": "3.1",
"twig/twig": "^1.23",
"slim/views": "^0.1.3",
"slim/csrf": "0.8.*",
"slim/twig-view": "^2.2"
},
"autoload" :{
"psr-4" : {"App\\" : "app/"}
},
"minimum-stability": "beta"
}
Container.php :
<?php
$container = $app->getContainer();
$container['view'] = function ($container) {
$dir = dirname(__DIR__); /
var_dump($dir);
$view = new \Slim\Views\Twig($dir.'/app/views', [
'cache' => false //$dir.'/tmp/cache'
]);
var_dump($view);
$basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/');
$view->addExtension(new Slim\Views\TwigExtension($c['router'], $basePath));
return $view;
};
?>
PagesController.php :
<?php
namespace App\Controllers;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
class PagesController
{
private $container;
public function __construct($container)
{
$this->container = $container;
}
public function home(RequestInterface $request, ResponseInterface $response)
{
//return $response->getBody()->write('hello');
$this->container->view->render($response, 'pages/home.twig');
}
}
?>
S'il vous manque des éléments je vous les donnent volontier !
Merci à ceux qui pourront m'aider :)