j'aimerais savoir comment puis mettre en place un système dans mon application qui pourra me permettre, quand je me connecte de pouvoir constater toutes des actions (Création, modification, suppression) effectuées sur la base de donnée. Une sorte d'historique en fait.
Mon soucis c'est que j'ai du mal a en inclure un dans le projet et je ne comprend pas beaucoup leur fonctionnement, tout ce que je veux c'est l'historique et rien de plus mais il faut utiliser des "bundles" moi j'utillise Symfony de cette manière (oui je suis débutante ) :
Salut, un bundle c'est une librairie que tu peux facilement inclure à ton projet Symfony ou autre d'ailleurs et qui amène un certain nombre d'outils ou de fonctionnalités.
Je te conseille de les utiliser, car ils amèneront plus de stabilité à ton application web et te feront gagner du temps (Pourquoi devoir réinventer la roue ?).
Maintenant il faut que tu spécifies qu'elle(s) entité(s) tu souhaites loguer avec leurs propriétés et pour ça c'est tout simple!
namespace App\Entity;
// ... //
use Gedmo\Mapping\Annotation as Gedmo; <-- Import
/**
* @Gedmo\Loggable <-- Annotation sur l'entité
*/
class MaClass{
/**
* @Gedmo\Versioned <-- Annotation sur la propriété
*/
private $maProprieteALoguer;
//..//
}
Et pour finir il faut générer la migration pour créer la table de log :
php ./bin/console make:migration
Une nouvelle migration devrait se générer dans ton dossier migrations avec ceci. (Je pars du principe que tu utilises MySql)
$this->addSql(
'CREATE TABLE ext_log_entries ....
Tu appliques les modifications dans ta BDD
php ./bin/console doctrine:migrations:migrate
Une table ext_log_entries à dû être créée et normalement si tu viens à modifier une entité, tu devrais avoir une entrée qui se créée dans la table en question.
C'est l'installation de base ci dessus et j'espère n'avoir rien oublié dans l'installation sinon fais le moi savoir
Tu as la doc du bundle pour voir toutes les possibilités qu'il amène.
J'ai fais ce Controller pour récupérer le repository qui se trouve dans le vendor: (vous voulez que je vous envoie le repository et l'entity également ?)
<?php
namespaceApp\Controller;
// Entity
use Gedmo\Loggable\Entity\MappedSuperclass\AbstractLogEntry;
// Repository
use Gedmo\Loggable\Entity\Repository\LogEntryRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
Cannot autowire argument $LogEntryRepository of "App\Controller\EntController::index()": it references class "Gedmo\Loggable\Entity\Repository\LogEntryRepository" but no such service exists.
Il ne trouve pas le repository, j'ai déjà essayé de le déplacer mais j'ai d'autres erreurs
j'ai trouvé :
// file: src/Acme/DemoBundle/Controller/DemoController.php
// include this code portion
/**
* @Route("/posts", name="_demo_posts")
*/
public function postsAction()
{
$em = $this->getDoctrine()->getEntityManager();
$repository = $em->getRepository('AcmeDemoBundle:BlogPost');
// create some posts in case if there aren't any
if (!$repository->findOneById('hello_world')) {
$post = new \Acme\DemoBundle\Entity\BlogPost();
$post->setTitle('Hello world');
$next = new \Acme\DemoBundle\Entity\BlogPost();
$next->setTitle('Doctrine extensions');
$em->persist($post);
$em->persist($next);
$em->flush();
}
$posts = $em
->createQuery('SELECT p FROM AcmeDemoBundle:BlogPost p')
->getArrayResult()
;
die(var_dump($posts));
}
$ent = $em->find(Ent::class, $id /* Tu dois spécifier ton Ent id*/);
J'essaye de faire un findAll qui récupère toute ce qu'il y a dans la table, doit-on vraiment mettre un id ?
ensuite que je met un id j'ai cette erreur :
Class 'App\Controller\Ent' does not exist
Quand je ne met pas d'id :
Too few arguments to function ContainerXSTxHfn\EntityManager_9a5be93::find(), 1 passed in C:\wamp64\www\REAPLE\osmose_projet\src\Controller\EntController.php on line 31 and at least 2 expected
On ne devrait plutôt faire une requête sql de ce type là ?
public function calculLocation2()
{
return $this -> getEntityManager()
-> createQuery(
'SELECT a.ht, SUM(a.ht) AS horstaxe
FROM App\entity\Locations a
WHERE a.date_paiement = 2020 AND MONTH(a.date_paiement) = 01
')
-> getResult();
}
Alors effectivement nous avons un affichage comme un console log
sauf que je cherche à faire quelque chose dans le style pour faire un tableau avec toute les infos, c'est juste de l'affichage et non pas un console log. Dans la mesure ou c'est possible de faire ça évidemment.
[Symfony5] Créer un historique
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
While(true)
While(true)
While(true)
While(true)
While(true)
While(true)
While(true)
While(true)