Bonjour,
Je suis débutant sur Symfony2.
J'ai un problème de compréhension :

Controller:

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
<?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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
<?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 : 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
<?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...