Appel de Doctrine à partir d'un service
Bonjour,
Je suis débutant sur Symfony2.
J'ai un problème de compréhension :
Controller:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?php
namespace claude\TeletravailBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Httpfoundation\Response;
class TeletravailController extends Controller
{
public function accueilAction($page)
{
// Mise à jour des compteurs
// On récupère le service
$compteur = this->container->get('claude_Teletravail.compteur');
// Affichage du Template accueil ../.. |
Service : claude_Teletravail.compteur
parameters:
Code:
1 2 3 4
| # src/claude/TeletravailBundle/Resources/config/services.yml
services:
claude_Teletravail.compteur:
class: claude\TeletravailBundle\Compteur\claudecompte |
le fichier visiteurs utilisé:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php
namespace claude\TeletravailBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* visiteurs
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="claude\TeletravailBundle\Entity\visiteursRepository")
*/
class visiteurs
{ .. et les zones .. |
visiteursRepository :
Code:
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
| <?php
namespace claude\TeletravailBundle\Entity;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\EntityRepository;
/**
* visiteursRepository
*
*/
class visiteursRepository extends EntityRepository
{
private $visiteur;
private $date;
private $page;
public function nbrvisit($visiteur, $page)
{
$qb = $this->createQueryBuilder('v');
$qb->where('v.ip = :ip')
->setParameter('ip', $visiteur)
->andwhere('v.date = :date')
->setParameter('date', currentdate())
->andwhere('v.page = :page')
->setParameter('page', $page);
return $qb->getQuery()->getSingleScalarResult()
->getResult();
}
} |
Appel du Repository :
Code:
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
| <?php
namespace claude\TeletravailBundle\Compteur;
use Doctrine\ORM\EntityRepository;
class claudecompte extends EntityRepository
{
public function __construct($em, Mapping\ClassMetadata $class)
{
$this->_entityName = $class->name;
$this->_em = $em;
}
public function comptage()
{
// Récupération de l'IP du visiteur
$visiteur = $this->get_ip();
$visiteur = ip2long($visiteur);
// Adresse de la page
$page = substr($_SERVER['PHP_SELF'], 1);
// Appel de la fontion "nbrvisit" qui est sensée faire un comptage
$retour_count = $this->getDoctrine()
->getManager()
->getRepository('claudeTeletravailBundle:visiteurs')
->nbrvisit($visiteur, $page); |
2 problèmes : si je ne mets pas le _const ==> paramètre 1 de _const manquant (fatal error)
si je le mets : la méthode pour Doctrine doit être Findby...
Doctrine est un service. On peut donc appeler de n'importe où. Est-ce qu'il y a une particularité lorsque l'on ne l'appelle pas via le Controller ?
Merci d'avance...