IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PHP Discussion :

Service dans Twig extension


Sujet :

PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Clavardeur en tout genre
    Inscrit en
    Août 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Clavardeur en tout genre

    Informations forums :
    Inscription : Août 2019
    Messages : 60
    Points : 59
    Points
    59
    Par défaut Service dans Twig extension
    Bonjour ,

    je débute sur Symfony 4 , je souhaite appeler une fonction getDateConnexion() dans TwigExtension. Il s'agit d'un compteur de connexion, si la date de connexion est égale à la date du jour pour un User alors on ajoute +1, et je récupère ce compteur pour l'afficher avec Twig sur un tableau de bord.

    Cependant j'ai une erreur, pouvez vous m'aider ? Ou une autre approche est possible ? Je ne comprend pas ce qu'il attend . Merci d'avance pour vos réponses.

    Too few arguments to function App\Service\DateConnexionService::__construct(), 0 passed in C:\Blog\Axo\src\Twig\StatExtension.php on line 39 and exactly 1 expected
    Le service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
     
     
    namespace App\Service;
     
    use Doctrine\Common\Persistence\ObjectManager;
     
    class DateConnexionService
    {
        //l'entité qui nous intéresse est réprésentée par entityClass
        private $entityClass;
        private $manager;
        //injection de dépendance pour savoir qu'elles sont les informations nécessaire pour construire le service
        public function __construct(ObjectManager $manager)
        {
         $this->manager=$manager;
        }
        public function setEntityClass($entityClass)
        {
            //permet de modifier l'entité
            $this->entityClass= $entityClass;
            return $this;
        }
     
        /**
         * @return mixed
         */
        public function getEntityClass()
        {
            return $this->entityClass;
        }
        public function getDateConnexion()
        {
            $repo = $this->manager->getRepository($this->entityClass);
            $datesConnexion = $repo ->findBy(['connectedAt']);
     
            $count = 0;
            $dateN = new \DateTime();
            $dateNow = $dateN->format('Y-m-d');
            foreach ($datesConnexion as $dateConnexion) {
                $dateCo = $dateConnexion['connectedAt']->format('Y-m-d');
                if ($dateCo == $dateNow) {
                    $count++;
                    echo $count;
                }
            }
        }
    }
    twig extension :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?php
     
    namespace App\Twig;
     
     
    use App\Service\DateConnexionService;
    use App\Service\StatService;
    use Twig\Extension\AbstractExtension;
    use Twig\TwigFilter;
    use Twig\TwigFunction;
     
    class StatExtension extends AbstractExtension
    {
        public function getFilters(): array
        {
            return [
                // If your filter generates SAFE HTML, you should add a third
                // parameter: ['is_safe' => ['html']]
                // Reference: https://twig.symfony.com/doc/2.x/advanced.html#automatic-escaping
                new TwigFilter('filter_name', [$this, 'doSomething']),
            ];
        }
     
        public function getFunctions(): array
        {
            return [
                new TwigFunction('nbrStats', [$this, 'readStats']),
                new TwigFunction('nbrConnexion', [$this, 'getAllDateConnexion']),
            ];
        }
     
        public function readStats()
        {
            $statService= New StatService();
            $statService->readStats();
        }
     
        public function getAllDateConnexion(){
            $dateConnexionService= New DateConnexionService();
            $dateConnexionService->getDateConnexion();
        }
     
     
    }

    La vue :
    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    {% extends 'admin/blog/base.html.twig' %}
     
    {% block title %}Tableau de bord {% endblock %}
     
    {% block body %}
    <div class="container-fluid">
        <div class="row">
                <div class="col">
                    <div class="card bg-primary text-white mb-3 text-center">
                        <div class="card-body">
                            <div class="row">
                                <div class="col-4">
                                    <i class="fas fa-users fa-3x"></i>
                                </div>
                                <div class="col-8">
                                    <h4 class="card-title">{{nbrStats()}} visiteurs aujourd'hui</h4>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
     
     
                <div class="col">
                    <div class="card bg-dark text-white mb-3 text-center">
                        <div class="card-body">
                            <div class="row">
                                <div class="col-4">
                                    <i class="fas fa-newspaper fa-3x"></i>
                                </div>
                                <div class="col-8">
                                    <h4 class="card-title">{{ stats.articles }} articles publiés</h4>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
     
                <div class="col">
                    <div class="card bg-warning text-white mb-3 text-center">
                        <div class="card-body">
                            <div class="row">
                                <div class="col-4">
                                    <i class="fas fa-registered fa-3x"></i>
                                </div>
                                <div class="col-8">
                                    <h4 class="card-title">{{ stats.users }} inscrits en base</h4>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
     
            <div class="col">
                <div class="card bg-success text-white mb-3 text-center">
                    <div class="card-body">
                        <div class="row">
                            <div class="col-4">
                                <i class="fas fa-plug fa-3x"></i>
                            </div>
                            <div class="col-8">
                                <h4 class="card-title"> {{nbrConnexion()}}</h4>
     
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
     
    {% endblock %}

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Salut,

    L'erreur indique qu'il manque un paramètre (de type ObjectManager) quand tu instancies un DateConnexionService dans StatExtension.php ligne 39.

Discussions similaires

  1. web service dans websphere
    Par prince_antonio dans le forum Services Web
    Réponses: 1
    Dernier message: 08/07/2007, 20h09
  2. Web services dans CRM ou ISU
    Par _steph_ dans le forum SAP
    Réponses: 2
    Dernier message: 21/06/2007, 13h41
  3. [débutant]mettre son web service dans le serveur local
    Par am@123 dans le forum Services Web
    Réponses: 1
    Dernier message: 17/05/2007, 22h43
  4. securisation de Web Services dans Jonas avec Axis
    Par emeras dans le forum Services Web
    Réponses: 1
    Dernier message: 08/02/2007, 15h54
  5. Mettre en automatique un service dans un batch
    Par log1c dans le forum Windows
    Réponses: 1
    Dernier message: 02/12/2005, 12h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo