Bonjour,
Voila je rencontre un petit problème avec mon code.
Bonjour cher tous. Heureux de vous retrouver.
Suis coincé et ai besoin de votre majestueuse pour résoudre un problème dans mon code.
<?php
namespace App\Blog;
use Framework\Module;
use App\Framework\Renderer\RendererInterface;
use Framework\Router;
use Psr\Http\Message\ServerRequestInterface as Request;
class BlogModule extends Module
{
const DEFINITIONS= __DIR__ . '/config.php';
public function __construct(string $prefix, Router $router, RendererInterface $renderer)
{
$this->renderer = $renderer;
$this->renderer->addPath('blog', __DIR__ . '/views');
$router->get($prefix, [$this, 'index'], 'blog.index');
$router->get($prefix . '/{slug:[a-z\-0-9]+}', [$this, 'show'], 'blog.show');
}
public function index(Request $request): string
{
return $this->renderer->render('@blog/index');
}
public function show(Request $request): string
{
return $this->renderer->render('@blog/show', [
'slug' => $request->getAttribute('slug')
]);
}
}
Lancer ma page sur le navigateur et que ça marche.
Fatal error: Uncaught TypeError: Argument 2 passed to App\Blog\BlogModule::construct() must be an instance of Framework\Router, string given, called in /var/www/monFramework/vendor/php-di/php-di/src/Definition/Resolver/ObjectCreator.php on line 146 and defined in /var/www/monFramework/src/Blog/BlogModule.php:14 Stack trace: #0 /var/www/monFramework/vendor/php-di/php-di/src/Definition/Resolver/ObjectCreator.php(146): App\Blog\BlogModule->construct('prefix', '/blog', Object(App\Framework\Renderer\TwigRenderer)) #1 /var/www/monFramework/vendor/php-di/php-di/src/Definition/Resolver/ObjectCreator.php(73): DI\Definition\Resolver\ObjectCreator->createInstance(Object(DI\Definition\AutowireDefinition), Array) #2 /var/www/monFramework/vendor/php-di/php-di/src/Definition/Resolver/ResolverDispatcher.php(64): DI\Definition\Resolver\ObjectCreator->resolve(Object(DI\Definition\AutowireDefinition), Array) #3 /var/www/monFramework/vendor/php-di/php-di/src/Container.php(377): DI\Definition\Resolver\ResolverDispatcher->resolve(Object(DI in /var/www/monFramework/src/Blog/BlogModule.php on line 14
Salut,
je te conseil en premier lieu de lire ton erreur, car ton erreur t'expliques ce qu'il se passe, elle dit qu'elle attendait une instance de Router
et qu'elle a obtenu une chaîne de caractère donc en l'occurence le prefix du module.
Donc dans le fichier config.php
de ton module il faut que tu définisses comment doit-être instancier ton BlogModule, regarde:
BlogModule::class => object()->constructorParameter('prefix', '/blog')
En espérant t'avoir aidé :)
Merci Shouky pour ta réponse. C'est exactement là que se trouvait mon problème. Je pense que je devrais simuler des erreures dans mes codes pour apprendre à interpréter les messages d'erreures qui s'affichent sur le navigateur; un peu comme cela se fait en mécanique ou en électronique.