Bonjour,
Voila je rencontre un petit problème avec mon code.
Décrivez ici votre code ou ce que vous cherchez à faire
<?php
namespace App\Blog;
use App\Blog\Actions\BlogAction;
use Framework\Module;
use App\Framework\Renderer\RendererInterface;
use Framework\Router;
class BlogModule extends Module
{
const DEFINITIONS= __DIR__ . '/config.php';
const MIGRATIONS = __DIR__ . '/db/migrations';
const SEEDS = __DIR__ . '/db/seeds';
public function __construct(string $prefix, Router $router, RendererInterface $renderer)
{
$renderer->addPath('blog', __DIR__ . '/views');
$router->get($prefix, BlogAction::class, 'blog.index');
$router->get($prefix . '/{slug:[a-z\-0-9]+} - {id:[0-9]+}', BlogAction::class, 'blog.show');
}
}
{% extends 'layout.twig' %}
{% block title "Mes articles" %}
{% block body %}
<h1 style="margin-top: 70px">Bienvenue sur le blog</h1>
<ul>
{% for post in posts %}
<li>
<a href="{{ path('blog.show', {slug: post.slug, id: post.id}) }}">
{{ post.name }}
</a>
</li>
{% endfor %}
</ul>
{% endblock %}
Bonsoir tout le monde. De grace je voudrais que vous aidiez à comprendre cette erreure. Merci par avance
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
Fatal error: Uncaught Zend\Expressive\Router\Exception\RuntimeException: Parameter value for [slug] did not match the regex [a-z\-0-9]+
in /var/www/monFramework/vendor/zendframework/zend-expressive-fastroute/src/FastRouteRouter.php:282 Stack trace: #0 /var/www/monFramework/src/Framework/Router.php(55): Zend\Expressive\Router\FastRouteRouter->generateUri('blog.show', Array) #1 /var/www/monFramework/src/Framework/Router/RouterTwigExtension.php(28): Framework\Router->generateUri('blog.show', Array) #2 /var/www/monFramework/vendor/twig/twig/lib/Twig/Environment.php(378) : eval()'d code(55): Framework\Router\RouterTwigExtension->pathFor('blog.show', Array) #3 /var/www/monFramework/vendor/twig/twig/lib/Twig/Template.php(189): __TwigTemplate_4cd96ec0eb20be9c80765db757474cdc3869633966fc7ca581d802fe78ec117a->block_body(Array, Array) #4 /var/www/monFramework/vendor/twig/twig/lib/Twig/Environment.php(378) : eval()'d code(59): Twig_Template->displayBlock('body', Array, Array) #5 /var/www/monFramework/vendor/twig/twig/lib/Twig/Templ in /var/www/monFramework/src/Blog/views/index.twig on line 12
Bonjour, je n'ai jamais utilisé ce framework, mais ton erreur dit que le paramètre passé (slug) n'est pas bon selon ton expression régulière. Par exemple, si ton expression régulière décrit ton paramètre comme ceci:
[a-z]+
Et que ton paramètre est 1 par exemple. Ce genre d'erreur va sortir puisque dans ton expression régulière tu dis que ton paramètre va contenir que des lettres de a-z.
J'espère que j'ai pu t'éclairer ^^
Bonjour et merci pour ta réponse.
J'ai essayé ce regex là mais ça n'a pas marché.
Fatal error: Uncaught Zend\Expressive\Router\Exception\RuntimeException: Parameter value for [slug] did not match the regex [a-z0-9]+
in /var/www/monFramework/vendor/zendframework/zend-expressive-fastroute/src/FastRouteRouter.php:282 Stack trace: #0 /var/www/monFramework/src/Framework/Router.php(55): Zend\Expressive\Router\FastRouteRouter->generateUri('blog.show', Array) #1 /var/www/monFramework/src/Framework/Router/RouterTwigExtension.php(28): Framework\Router->generateUri('blog.show', Array) #2 /var/www/monFramework/vendor/twig/twig/lib/Twig/Environment.php(378) : eval()'d code(55): Framework\Router\RouterTwigExtension->pathFor('blog.show', Array) #3 /var/www/monFramework/vendor/twig/twig/lib/Twig/Template.php(189): __TwigTemplate_4cd96ec0eb20be9c80765db757474cdc3869633966fc7ca581d802fe78ec117a->block_body(Array, Array) #4 /var/www/monFramework/vendor/twig/twig/lib/Twig/Environment.php(378) : eval()'d code(59): Twig_Template->displayBlock('body', Array, Array) #5 /var/www/monFramework/vendor/twig/twig/lib/Twig/Templat in /var/www/monFramework/src/Blog/views/index.twig on line 12
Désolé, erreur de ma part, j'avais pas pensé que ton slug pouvait contenir des -. Essaie comme ça:
[a-z0-9\-]+
. Pour le coup ça devrait marcher.
Il ne se passe rien du tout.
Fatal error: Uncaught Zend\Expressive\Router\Exception\RuntimeException: Parameter value for [slug] did not match the regex [a-z0-9\-]+
in /var/www/monFramework/vendor/zendframework/zend-expressive-fastroute/src/FastRouteRouter.php:282 Stack trace: #0 /var/www/monFramework/src/Framework/Router.php(55): Zend\Expressive\Router\FastRouteRouter->generateUri('blog.show', Array) #1 /var/www/monFramework/src/Framework/Router/RouterTwigExtension.php(28): Framework\Router->generateUri('blog.show', Array) #2 /var/www/monFramework/vendor/twig/twig/lib/Twig/Environment.php(378) : eval()'d code(55): Framework\Router\RouterTwigExtension->pathFor('blog.show', Array) #3 /var/www/monFramework/vendor/twig/twig/lib/Twig/Template.php(189): __TwigTemplate_4cd96ec0eb20be9c80765db757474cdc3869633966fc7ca581d802fe78ec117a->block_body(Array, Array) #4 /var/www/monFramework/vendor/twig/twig/lib/Twig/Environment.php(378) : eval()'d code(59): Twig_Template->displayBlock('body', Array, Array) #5 /var/www/monFramework/vendor/twig/twig/lib/Twig/Templ in /var/www/monFramework/src/Blog/views/index.twig on line 12
Si je ne me trompe pas en tant que débutant, je crois c'est ça '$prefix . '/{slug:[a-z0-9-]+}-{id:[0-9]+}'; dans cette ligne de code: '$router->get($prefix . '/{slug:[a-z0-9-]+}-{id:[0-9]+}', BlogAction::class, 'blog.show');'
'''
ce regex marche très bien si je mets de côté la récupération de l'id d'un article par exemple.
'''$router->get($prefix . '/slug:[a-z-0-9]', BlogAction::class, 'blog.show');'''
Mais en tenant compte du fait que je dois récupérer un article avec son id,
'''$router->get($prefix . '/{slug:[a-z0-9-]+}-{id:[0-9]+}', BlogAction::class, 'blog.show');'''
ça ne marche plus.
Y a t il un autre moyen plus propre qui me permette de récupérer un article et son id?
Merci pour vos réponses
Le moyen le plus propre selon moi est celui que tu utilises en ce moment.
Tes regex semblent bons, je ne connais pas assez voir pas du tout ZendFramework pour t'aider plus ...