Bsr
Svp qulqu'un peut il m'aider à installer les extensions de twig sur slim?
C'est un petit site, mais matheureusement je suis nouveau sur twig et slim.
Merci,

5 réponses


Bonjour.

je suis nouveau sur twig et slim

Quand tout développeur est dans le même cas que toi, il fait en sorte de se documenter pour apprendre à utiliser une resource.
Tu trouveras ce que tu as besoin de savoir ici Slim » Template ainsi que sur le site de Twig Documentation » Twig for Developers.
Tu as également des tutoriels sur le site concernant Slim.
Ne t'attends pas à ce que quelqu'un te dise qu'il va t'aider comme tu le demandes, surtout gratuitement.
Que ton site soit petit ou non n'y change rien.

Tu as des skeletons slim déjà tout fait sur github avec toute sorte de librairie, j'ai d'ailleurs fait les miens si jamais ça t'interresse.
Skeleton basic, Skeleton complet

Salut,

Quel est le souci que tu rencontres exactement ?
As-tu le code incrimité à nous présenter ?

Mon souci est d'activé le lien de la page.
Voici ma page MesExtensions

<?php
  namespace App\Commander;
    /**
     *
     */
    class MesExtensions extends \Slim\Views\TwigExtension
    {

    public function getFunctions()
    {
        return [
            new Twig_SimpleFunction('activeClass', [$this, 'activeClass'], ['needs_context' => true])
        ];
    }

    public function activeClass(array $context, $page) {
        if (isset($context['current_page']) && $context['current_page'] === $page) {
            return ' active ';
        }
    }

    }

Je vois. J'ai eu à faire un truc similaire de mon côté, et je suis passé par un middleware en fait. Tu récupères la route courante via la requête, puis tu ajoutes le nom de la route courante retournée aux variables globales de Twig. De cette façon, tu auras accès à la route courante dans tous tes templates Twig et tu pourras faire les traitements que tu veux.

Voici le middleware dans lequel je récupère et stocke la route courante, ça pourra peut-être t'aider (c'est rien de bien sorcier) :


namespace App\Middleware;

use \Twig_Environment;
use Slim\Http\Request;
use Slim\Http\Response;

class RouteMiddleware
{
    protected $twig;

    public function __construct(Twig_Environment $twig)
    {
        $this->twig = $twig;
    }

    public function __invoke(Request $request, Response $response, $next)
    {
        $route = $request->getAttribute('route');
        if (!is_null($route)) {
            $this->twig->addGlobal('current_route', $route->getName());
        }
        return $next($request, $response);
    }
}